我应该如何使用Spring Batch和Spring Cloud Data Flow分割和编排可配置的批处理网络?

问题描述 投票:0回答:1

我们希望将某些Kettle导入作业的调度和顺序控制从专有实现迁移到Spring Batch风格的良好实践实现。

我打算使用Spring Cloud Data Flow(SCDF)服务器来实现并运行现有外部导入作业的可配置序列。

SCDF控制台任务编辑器UI似乎有望组合一个流程。因此,一个任务包装了一个Spring Batch,该Spring Batch在一个步骤中仅执行了一个Tasklet,用于启动和轮询Carte REST API。到目前为止,这有意义吗?

您是否建议更好的实现方式?

限制条件:

  • 使用Kette REST API触发并轮询外部Kettle作业。实际上,这是一个单独的Kettle作业实现,为要导入的每个实体使用单独的参数调用。
  • [多个实体有一个可配置的,有向图的导入作业,其中一些依赖于先前实体类型的正确导入。 (例如,部门,然后是员工,然后是角色分配...)
  • 随着即将到来的实施,我们希望
    • 监视和控制(开始,中止,暂停,继续)
    • 可重启性
    • 易于在生产中重新配置序列(可能通过GUI或外部编辑器)
    • 可能有一些报告和统计信息。

据我目前的理解,这可以通过使用Spring Cloud Data Flow(SCDF)服务器以及某些Task / Batch实现/组合来实现。

如果我错了,请更正我,但是具有其硬连线流程的单个Spring Batch作业对我来说似乎不太合适。还是有一种简单的方法来编辑和重新部署具有更改的生产流程的Spring Batch?我什么也找不到,甚至没有一个易于使用的批处理XML表示形式的编辑器。

spring-batch spring-cloud-dataflow spring-cloud-task spring-batch-tasklet
1个回答
0
投票

是的,我相信您可以使用Spring Cloud Data Flow以及Spring Cloud Task / Spring Batch来实现您的设计目标。

[如您从另一个SO线程所指出的,可以使用Spring Cloud Data Flow来管理多个Spring Batch作业的流(使用组合任务)。

使用Kette REST API触发并轮询外部Kettle作业。实际上,这是一个单独的Kettle作业实现,为要导入的每个实体使用单独的参数调用。

[多个实体有一个可配置的,有向图的导入作业,其中一些依赖于先前实体类型的正确导入。 (例如,部门,然后是员工,然后是角色分配...)

同样,以上两项都可以作为组合任务进行管理(组合任务由常规任务以及基于Spring Batch的应用程序组成。

您可以在调用时通过批处理作业参数或任务/批处理应用程序属性或简单的命令行参数来管理传递给每个任务/批处理的参数。

随着即将到来的实施,我们希望监视和控制(开始,中止,暂停,继续)可重启性易于在生产中重新配置序列(可能是通过GUI或外部编辑器)可能会有一些报告和统计信息。

Spring Cloud Data Flow可帮助您实现这些目标。您可以访问Task Developer GuideTask Monitoring Guide了解更多信息。

您也可以从站点检查Batch developer guide

© www.soinside.com 2019 - 2024. All rights reserved.