通过 运行 批处理微服务分别在 Spring 云数据流上部署 Spring 批处理应用程序

Deploy Spring Batch application on Spring Cloud Data Flow by running the batch microservice separately

我有一个 Spring 批处理应用程序,我希望有两个选项来触发批处理:

  1. 公开 REST api
  2. 调度器

通过将批处理应用程序打包为任务,我可以将应用程序单独部署到 SCDF 服务器 运行ning 上。我正在 SCDF 服务器上创建任务类型的应用程序并引用批处理应用程序的 jar 文件。然后使用应用程序任务创建任务。

我知道 SCDF 公开休息接口以按计划触发任务以及一次性触发任务,但是我想将触发器保留在批处理本身中,因为我们需要使用单独的定义公开 REST 接口.

是否可以 运行 Spring 单独批处理应用程序作为 Spring 启动微服务并注册为 SCDF 服务器的任务?

Is it possible to run Spring batch application separately as a Spring boot microservice and register as a task with SCDF server?

不,需要 SCDF 中的任务定义,以便您利用 SCDF 的 RESTful 端点来启动或安排它重复出现 运行秒。 SCDF 中没有机制可以自动发现任意 batch-job 即 运行ning 独立。除非足迹是从 SCDF 内部建立的,否则我们没有任何跟踪能力来管理独立应用程序。

另一个需要注意的重要区别是:任务。 SCDF 中的任务是短暂的。它们启动、执行业务操作,并在业务逻辑完成时关闭。

为了在 Kubernetes 和 Cloud Foundry 等云平台中运行此核心设计,我们期望 Task/batch 应用程序与 RESTful 捆绑在一起控制器。同样,没有 health-checks 可用于任务。在添加 RESTful 性质的那一刻,它就需要 运行 作为 long-running 应用程序(因为您希望端点可以从其他服务访问),这将违反设计云平台中任务的前提。