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

How can i define a spring batch cloud task based on a specific batch job

我们目前正在将一个复杂的 spring 启动批处理 + 管理 UI 系统迁移到一个 spring-云任务基础设施中,该基础设施将由云数据流管理。

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

我们删除了任何 spring-batch admin 依赖项并添加了 spring-cloud-starter-task

我们还将引导应用程序调整为 Spring Cloud Task 编程模型。

在 spring 云数据流上注册 JAR 后,我们无法定义将仅触发具有自定义参数的特定作业的任务。

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

10 倍

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

  1. 将您的批处理作业重新打包到 Spring Boot über jar 中。这应该很简单。
  2. 为您想要的每项工作创建任务定义运行。创建 über jar 并向 Spring Cloud Data Flow 注册后,您需要创建作业定义。每个定义都类似于以下内容,其中 über jar 包含一个名为 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"