控制 spring 批处理作业 execution/scheduling 的最佳 practice/design 模式

Best practice/design pattern to control spring batch job execution/scheduling

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

接受最佳实践,因为我们可能会在项目后期再添加 3-4 个工作岗位。此外,将来我们可能会实施某种仪表板来显示每个作业的状态以及它没有启动的原因等。

通过 Spring 集成链接多个作业启动网关非常简单,因此作业 运行 一个接一个

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

等等

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

您可以使用 spring 批处理管理 REST API 查看作业状态等。

或者,考虑在 Spring XD 容器中部署您的作业,并通过启动第一个作业来使用 XD Admin REST API 控制整个事情,并监视作业事件以确定下一个作业的时间工作应该开始了。同样,Spring 集成可用于驱动整个作业序列。

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

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