java - 通过单独运行批处理微服务,在 Spring Cloud Data Flow 上部署 Spring Batch 应用程序

标签 java spring-boot spring-batch spring-rest spring-cloud-dataflow

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

  1. 公开 REST API
  2. 调度程序

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

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

是否可以将 Spring 批处理应用程序作为 Spring boot 微服务单独运行,并注册为 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 中没有机制可以自动发现独立运行的任意批处理作业。除非足迹是从 SCDF 内部建立的,否则我们没有任何跟踪能力来管理独立应用程序。

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

为了让这个核心设计在 Kubernetes 和 Cloud Foundry 等云平台上工作,我们期望任务/批处理应用程序与 RESTful Controller 捆绑在一起。同样,任务也无法进行健康检查。当您添加 RESTful 性质时,就需要将其作为长时间运行的应用程序运行(因为您希望端点可以从其他服务访问),这将违反云平台中任务的设计前提。

关于java - 通过单独运行批处理微服务,在 Spring Cloud Data Flow 上部署 Spring Batch 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147845/

相关文章:

spring - 创建spring boot gradle multi项目

java - 如何在一项作业执行中停止 Spring 编写器

java - 将 JavaFX 标签中的多行文本居中

java - Android Java - DataInputStream 从套接字到字符串

java - 将图像放入 tableColumn - updateItem 从未使用

java - 使用 MongoDB 作为 Spring 批处理作业存储库

java - 调用存储过程的批处理应用程序的正确 block 大小是多少?

java - 在eclipse中输入注释 block

java - 如何在 thymeleaf 中包含 message.properties

java - 如何为 swagger 2.8.0 做友好的基本 url