这似乎是一个相当简单的问题,但经过几天的研究后,我仍然无法找到一种方法来优雅地取消Flink作业并从代码重新启动
作为参考,有一个类似的帖子:Canceling Apache Flink job from the code,但它没有说明如何获取JobManager,它有可能有帮助的cancel()方法。
有人可以对此有所了解吗?
答案 0 :(得分:0)
我认为,通过代码取消flink作业的最简单方法是使用rest api。 请参阅:https://ci.apache.org/projects/flink/flink-docs-release-1.2/monitoring/rest_api.html#job-cancellation
然后,您可以在flink-code的主类中定义重新启动策略。喜欢
final int restartAttempts = configuration.getInteger(RESTART_ATTEMPTS, 3);
final int delayBtwAttempts = configuration.getInteger(RESTART_DELAY_IN_MILLIS, 3000);
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(fixedDelayRestart(restartAttempts, delayBtwAttempts));
请参阅:https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/restart_strategies.html