如何根据特定批处理作业定义弹簧批处理云任务

时间:2017-12-19 15:50:57

标签: spring-boot spring-batch spring-cloud-dataflow

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

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

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

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

在Spring云数据流上注册JAR后,我们无法定义一个任务,该任务只会触发具有自定义参数的特定作业。

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

10倍

1 个答案:

答案 0 :(得分:2)

为了完成您的目标,有两个步骤:

  1. 在SpringBootüberjar中重新打包批处理作业。这应该是非常直接的。
  2. 为要运行的每个作业创建任务定义。创建überjar并在Spring Cloud Data Flow中注册后,您将需要创建作业定义。每个定义都类似于以下内容,其中überjar包含名为fooJob的批处理作业和名为barJob的批处理作业:
  3. 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"