1

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

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

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

你会建议一个更好的实现吗?

约束和要求:

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

据我目前的理解,这可以通过使用 Spring Cloud Data Flow (SCDF) 服务器和一些任务/批处理实现/组合来实现。

如果我错了,请纠正我,但是具有硬连线流程的单个 Spring Batch 作业似乎不太适合我。或者有没有一种简单的方法来编辑和重新部署 Spring Batch 并改变生产流程?我找不到任何东西,甚至没有一个易于使用的用于批处理 XML 表示的编辑器。

4

1 回答 1

2

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

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

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

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

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

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

随着即将到来的实施,我们希望获得监视和控制(启动、中止、暂停、恢复)可重新启动性,生产中序列的轻松可重构性(可能通过 GUI 或外部编辑器)可能是一些报告和统计信息。

Spring Cloud Data Flow 可帮助您实现这些目标。您可以访问任务开发人员指南任务监控指南了解更多信息。

您也可以从该站点查看Batch 开发人员指南。

于 2019-12-11T15:41:29.393 回答