如何根据特定批处理作业定义 spring 批处理 Cloud 任务

我们目前正在将复杂的Spring启动批处理管理UI系统迁移到一个Spring-cloud-task基础架构中,该架构将被管理为 Cloud 数据流 .

作为POC的第一阶段,我们必须能够将所有Spring批处理作业打包在同一部署JAR下,并能够使用自定义作业参数逐个运行它们,并支持某种REST API以远程执行作业/任务 .

我们删除了任何 spring 批处理管理员依赖项并添加了 spring-cloud-starter-task

我们还将启动应用程序改编为Spring Cloud Task编程模型 .

在Spring Cloud 数据流上注册JAR之后,我们无法定义只触发具有自定义参数的特定Job的任务 .

阅读官方文档和stackOverFlow问题没有任何更有希望的结果 .

10倍

回答(1)

2 years ago

为了完成您要做的事情,有两个步骤:

  • 在SpringBootüberjar中重新打包批处理作业 . 这应该是非常直接的 .

  • 为要运行的每个作业创建任务定义 . 创建überjar并在Spring Cloud Data Flow中注册后,您将需要创建作业定义 . 每个定义看起来类似于以下内容,其中überjar包含名为 fooJob 的批处理作业和一个名为 barJob 的批处理作业:

dataflow:> app register --name batchJobs --type task --uri <URI to über jar> dataflow:> task create --name fooBatchJob --definition "batchJobs --spring.batch.job.names=fooJob" dataflow:> task create --name barBatchJob --definition "batchJobs --spring.batch.job.names=barJob"