[英]How to avoid relaunching task while it's status is still running on Spring Cloud Data Flow
我在 Spring 雲數據流上部署了一個 Spring 批處理項目作為任務。
我第一次啟動了任務(它將運行大約 5 分鍾,這使得任務的狀態為“正在運行”)。 但是,當它的狀態為運行並且它再次工作時,我第二次重新啟動了此任務。
1)如何配置任務直到最后一次完成狀態才能重新啟動。 2)此外,我發現停止作業時,它將執行直到完成當前步驟(我的作業有2個步驟,第二個步驟沒有執行)。 但是,當我停止工作時,有什么方法可以立即關閉它(步驟 1)?
您可以使用JobExplorer class 來檢查正在運行的作業,請參閱jobExplorer.findRunningJobExecutions(jobName)
方法。
在你的 JobLauncher class 你可以這樣:
@Component
public class MyJobLauncher {
private static final Logger LOG = LoggerFactory.getLogger(MyJobLauncher.class);
private final Job job;
private final JobLauncher jobLauncher;
private final JobExplorer jobExplorer;
@Autowired
public MyJobLauncher(@Qualifier("myJob") Job job, JobLauncher jobLauncher, JobExplorer jobExplorer) {
this.job = job;
this.jobLauncher = jobLauncher;
this.jobExplorer = jobExplorer;
}
public void launchJob() throws JobParametersInvalidException, JobExecutionAlreadyRunningException,
JobRestartException, JobInstanceAlreadyCompleteException, IOException {
if (jobExplorer.findRunningJobExecutions("myJob").isEmpty()) {
LOG.info("Starting myJob");
jobLauncher.run(job, new JobParameters());
LOG.info("Stopping myJob");
}
}
}
要關閉作業,請檢查JobExecution.stop()方法,該方法可以從jobExplorer.getJobExecution()
方法中獲取。
如何避免在 Spring 雲數據流上仍在運行時重新啟動任務
Spring Cloud Task 2.0.0 添加了一項功能,可讓您防止任務並發運行。 見https://spring.io/blog/2018/05/07/spring-cloud-task-2-0-0-release-is-now-available#restricting-concurrent-task-execution
您需要激活spring.cloud.task.singleInstanceEnabled=true
屬性。
您可以在限制 Spring 雲任務實例部分找到更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.