控制弹簧批作业执行/调度的最佳实践/设计模式

时间:2015-06-28 12:03:14

标签: spring-batch spring-integration

在工作2完成之前工作2不能开始的工作2相互依赖的工作很少,明智的工作4在工作3完成之前不能开始。有没有最好的做法可以遵循这个?所有这些作业都对文件系统或数据库进行了某种轮询,所以我正在考虑使用spring集成来发送作业启动事件,但我的困惑是,我应该将它们打包在一起并拥有一个可以控制的父Spring集成应用程序上下文工作执行与否?

打开最佳实践,我们可能会在项目后期再增加3-4个工作。同样在将来,我们可能会实施某种仪表板来显示每项工作的状态以及它没有开始的原因等。

1 个答案:

答案 0 :(得分:2)

使用Spring Integration连接多个作业启动网关以使作业能够在彼此之后运行,这非常简单

...->JLG1->transformResult1->JLG2->transformResult2->...

可以在自己的配置文件中定义作业并将其导入主流。

您可以使用spring batch admin REST API查看作业状态等。

或者,考虑在Spring XD容器中部署作业,并通过启动第一个作业使用XD Admin REST API控制整个作业,并监视作业事件以确定何时应启动下一个作业。同样,Spring Integration可用于驱动整个作业序列。

Spring XD还有一个REST API(和用户界面)来检查作业状态。

有关详细信息,请参阅the XD documentation