我如何根据特定批处理作业定义 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 倍
为了完成您想要做的事情,有两个步骤:
- 将您的批处理作业重新打包到 Spring Boot über jar 中。这应该很简单。
- 为您想要的每项工作创建任务定义运行。创建 über jar 并向 Spring Cloud Data Flow 注册后,您需要创建作业定义。每个定义都类似于以下内容,其中 über jar 包含一个名为
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"
我们目前正在将一个复杂的 spring 启动批处理 + 管理 UI 系统迁移到一个 spring-云任务基础设施中,该基础设施将由云数据流管理。
作为 POC 的第一阶段,我们必须仍然能够将我们所有的 Spring 批处理作业打包在同一个部署 JAR 下,并且能够 运行 使用自定义作业参数一个一个地打包它们,并且支持某种 REST API 以远程执行 jobs/task。
我们删除了任何 spring-batch admin 依赖项并添加了 spring-cloud-starter-task
我们还将引导应用程序调整为 Spring Cloud Task 编程模型。
在 spring 云数据流上注册 JAR 后,我们无法定义将仅触发具有自定义参数的特定作业的任务。
阅读官方文档和 Whosebug 问题,没有任何更有希望的结果。
10 倍
为了完成您想要做的事情,有两个步骤:
- 将您的批处理作业重新打包到 Spring Boot über jar 中。这应该很简单。
- 为您想要的每项工作创建任务定义运行。创建 über jar 并向 Spring Cloud Data Flow 注册后,您需要创建作业定义。每个定义都类似于以下内容,其中 über jar 包含一个名为
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"