您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何以一定顺序运行Spring Batch Jobs(Spring Boot)?

如何以一定顺序运行Spring Batch Jobs(Spring Boot)?

1.首先通过spring.batch.job.enabled=false在 指定禁用自动作业启动

2.在您的主类中,执行- ApplicationContext ctx = SpringApplication.run(SpringBatchMain.class, args); 假设您的主类名为- SpringBatchMain.java。

这将初始化上下文,而无需启动任何作业。

3.一旦上下文被初始化,您可以在主类中对此JobLauncher bean进行操作JobLauncher jobLauncher = (JobLauncher) ctx.getBean("jobLauncher");或执行操作Autowired,并通过调用来按特定的顺序依次启动特定的作业jobLauncher.run(job, jobParameters)

您可以job从在步骤2初始化的上下文中获取特定实例。

您始终可以使用任何有序集合,通过迭代该集合来放置作业并启动作业。

4.只要您的JobLauncher配置为同步,即主线程等待jobLauncher.run()调用完成,并且JobLauncher的认行为,则上述技术有效。

如果已将jobLauncher定义为使用AsyncTaskExecutor,则作业将并行启动,并且不会保持顺序排列。

希望能帮助到你 !!

我正在尝试使用@OrderStephane Nicoll指出的注释,它似乎仅对创建作业的有序集合有所帮助,并且您可以按此顺序迭代和启动作业。

以下组件为我提供了指定订单中的工作,

@Component
public class MyJobs {
    @Autowired
    private List<Job> jobs;

    public List<Job> getJobs() {
        return jobs;
    }
}

我可以做,MyJobs myJobs = (MyJobs) ctx.getBean("myJobs"); 在定义了bean的主类中,

@Bean
    public MyJobs myJobs() {
        return new MyJobs();
    }

我可以myJobs按照@Order注释指定的顺序迭代并启动作业。

Java 2022/1/1 18:19:09 有417人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶