如何在 Spring Cloud Data Flow 中为 Spring Batch 作业设置调度程序?

Posted

技术标签:

【中文标题】如何在 Spring Cloud Data Flow 中为 Spring Batch 作业设置调度程序?【英文标题】:How to set scheduler for Spring Batch jobs in Spring Cloud Data Flow? 【发布时间】:2020-02-17 02:24:58 【问题描述】:

我正在设置一个新的 Spring Batch Jobs,并希望使用 SCDF 部署它。但是,我发现SCDF 不支持local framework 中的scheduler 功能。

我有 3 个问题要问你:

    有人能解释一下schedulerSCDF 是如何工作的吗?

    是否有任何方法可以使用SCDF 安排 1 个作业?

    我可以将本地服务器用作 Cloud Foundry 吗?以及如何?

【问题讨论】:

欢迎来到 SO!当您提出问题时,请尝试添加最少的内容:输入样本、预期输出样本、您尝试了什么、研究以及您在哪里堆叠。你尝试了什么?你的研究呢? 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 @user158:在这里重新编辑,请不要在整行或段落中添加粗体 - 它不会使事情更容易阅读。同样,请不要将代码格式添加到实际上不是代码(或控制台 I/O)的内容中。 【参考方案1】:

是的,Spring Cloud Data Flow 不支持在local 平台上进行调度。请注意local SCDF 服务器仅用于开发目的,根据设计,调度支持旨在依赖于平台。因此,使用 CF 和 K8s 调度程序的 Cloud Foundry 和 Kubernetes 支持 SCDF 调度功能。

1) 能否解释一下 SCDF 的调度程序是如何工作的?

当然,与deployer 用于启动任务/部署流的方式类似,SPI 用于在spring-cloud-deployer 项目下调度任务。底层调度器实现可以实现这一点。目前,我们在spring-cloud-deployer-cloudfoundry 和spring-cloud-deployer-kubernetes 中实现了CF 和K8s 调度器。

作为用户,您可以为任务(批处理)应用程序(通过 SCDF 仪表板、shell 等)配置调度程序。您可以指定一个 cron 表达式来安排任务。配置完成后,SCDF 使用上述调度器实现将调度请求委托给平台调度器。一旦调度完成,平台(CF 上的 PCF 调度程序,K8s 上的 K8s 调度程序)使用调度来处理任务。

2) 有没有办法使用 SCDF 安排 1 个作业?

是的,根据 1 的回答

3) 我可以将我的本地服务器用作云代工厂吗?以及如何?

要在指向 CF 实例的本地运行 SCDF,您可以设置必要的 CF 部署程序属性并启动 SCDF 服务器实例。它类似于您在 SCDF 服务器中配置多平台的方式。您可以在此here 上找到更多文档。

【讨论】:

感谢您的回答。那么当我将本地服务器用作云 Foundry 时,我可以使用调度程序功能吗? 可以,只要您启用了调度功能并且调度程序 URL 指向正确的调度程序实例。 我在 application.properties 中使用了 spring.cloud.dataflow.features.schedules-enatbled: true。是您提到的调度功能吗?但是,我不知道如何设置“指向正确调度程序实例的调度程序 URL”。你有任何关于它的文件或用户手册吗?请给我一些例子?非常感谢您的帮助。 您需要将SPRING_CLOUD_SCHEDULER_CLOUDFOUNDRY_SCHEDULER_URL属性设置为值:scheduler.<Domain-Name> 总之,我必须在本地服务器上安装云铸造(本主题中提到:***.com/questions/36596743/…)。之后,我可以指向该“本地云”上的 CF 实例以使用 SCDF 的调度程序功能。对吗?

以上是关于如何在 Spring Cloud Data Flow 中为 Spring Batch 作业设置调度程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Cloud Data Flow 任务中外部化应用程序属性

如何在与 Spring Cloud Data Local 服务器不同的服务器上运行任务

Spring Cloud Data Flow 编辑现有流

Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理

Spring Cloud Data Flow 的自定义任务中缺少参数

Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制