【问题标题】:Whether to implement task or stream based approach是否实现基于任务或流的方法
【发布时间】:2020-08-15 11:00:57
【问题描述】:

我有一个运行 12 小时的数据管道进程。它轮询目录中的文件,每 15 分钟触发一次。基于一些业务逻辑,它要么将消息发布到消息队列,要么进行一些数据库插入/更新。我想出了两种方法:

  1. 我将它作为任务运行,但在这种情况下,如何在不让我的代码与任何特定消息队列提供程序紧密耦合的情况下发布消息?
  2. 我将其作为流运行,但在这种情况下,它必须 24/7 运行,尽管该过程不需要运行超过 12 小时。

在 SCDF 中构建此流程的最佳方式是什么?

【问题讨论】:

    标签: spring-cloud-stream spring-cloud-dataflow spring-cloud-task


    【解决方案1】:

    您可以让您的Spring Cloud Task 应用程序将任务事件生成到消息传递系统中。这可以通过在您的应用程序中添加依赖项spring-cloud-task-stream 来完成。有关这方面的更多信息,您可以在此处参考documentation

    关于您是否运行流式或批处理的问题完全取决于您基于各种因素,包括您运行它的平台和成本等,

    以下是一些选项:

    • SCDF 支持在 Kubernetes 和 CloudFoundry 中调度任务。如果您在其中一种环境中,则可以安排task 来检查传入的文件并完成任务 (1) 将消息发布到配置的消息系统(通过上面提到的spring-cloud-task-stream) (2) jdbc 插入/更新(你需要在你的批处理中定义这个)

    • 如果您无法手动取消部署/重新部署流,您可以使用 SCDF REST 客户端通过自定义任务应用程序触发流deploy/undeploy。通过这种方式,您可以控制何时运行您的流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2014-07-27
      • 2012-05-08
      相关资源
      最近更新 更多