栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

1.首先通过

spring.batch.job.enabled=false
application.properties中 指定禁用自动作业启动


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,则作业将并行启动,并且不会保持顺序排列。

希望能帮助到你 !!

编辑:

我正在尝试使用

@Order
Stephane Nicoll指出的注释,它似乎仅对创建作业的有序集合有所帮助,并且您可以按此顺序迭代和启动作业。

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

@Componentpublic 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注释指定的顺序迭代并启动作业。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号