如何根据特定的批处理作业定义 Spring 批处理云任务

Posted

技术标签:

【中文标题】如何根据特定的批处理作业定义 Spring 批处理云任务【英文标题】:How can i define a spring batch cloud task based on a specific batch job 【发布时间】:2018-06-02 02:27:17 【问题描述】:

我们目前正在将一个复杂的 Spring Boot 批处理 + 管理 UI 系统迁移到一个 spring-cloud-task 基础架构中,该基础架构将由 Cloud Data Flow 进行管理。

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

我们删除了所有 spring-batch 管理依赖项并添加了 spring-cloud-starter-task

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

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

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

10 倍

【问题讨论】:

【参考方案1】:

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

    将批处理作业重新打包到 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 批处理云任务的主要内容,如果未能解决你的问题,请参考以下文章

Spring Batch:根据 itemReader 中的结果执行作业

如何获取Spring批处理作业参数并传递给sql

如何将 JobParameters 传递给 Spring Cloud Task 启动的批处理作业?

如何使用 Spring 和 Hibernate 为 Web 应用程序和批处理作业设置事务

如何使用 Spring 和 Hibernate 为 Web 应用程序和批处理作业设置事务

Spring Boot 批处理作业识别