我有一个 Spring Boot 批处理应用程序,它有 5 个独特的作业,可以使用以下命令通过控制台执行:
java -jar artifactName jobName param1
但是现在这个项目将迁移到云端,所以我需要使用spring cloud task。到目前为止一切顺利。
我知道我必须在主类中定义 @enableTask 并在 application.properties 中定义属性: spring.application.name=cloudTask
因此,阅读Spring文档了解,为了使用spring云数据流服务器触发我的作业,可以定义一个任务,在本例中我应该将其用作cloudTask。但没有意义,因为如何触发它,因为我的应用程序有 5 个不同的作业,所以问题是:
如何将此任务名称与应用程序中定义的作业关联起来? 逻辑告诉我,我还需要定义 5 个任务名称,那么如何将这个任务名称与相应的作业绑定(bind)。
最佳答案
- 使用
@EnableTask
注释,您应该能够将批处理注册为 SCDF 中的任务应用程序 - 在“应用程序”下 - 当您的批处理出现在应用程序中后,
如果所有作业 5 个作业都是独立的,您应该能够创建 5 个具有相同应用名称但具有不同参数的不同组合任务,
或
如果这些是相互链接的,则可以通过在 DSL 中提供别名并传递相应的参数集,将链接的作业合并到 1 个组合任务中。 - 组合任务启动后,可以在“任务 -> 执行”下查看任务执行状态,并在“作业”下查看对应的作业状态
要将自定义参数传递给任务,可以利用@EnableConfigurationProperties
@ConfigurationProperties
。
关于Spring Boot批处理到具有多个作业的Spring Cloud任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51959592/