Spring Cloud Stream 应用程序 VS Spring Cloud Task 应用程序

2024-01-09

我正在探索 SCDF 来为我的系统编排现有的批处理任务。我注意到 SC Stream App Starters 已经提供了一些 OOTB 即可使用的流应用程序,这适合我的用例:

  1. 从 FTP 中提取 xml 文件 -> ftp 源
  2. 定制改造
  3. 将转换后的 xml 文件上传到另一个 FTP -> ftp 接收器

但是,我的系统只要求每隔 10 分钟执行一次上述批处理作业。使用流应用程序实现它很好,但它要求流应用程序 24-7 运行(使用 SCDF 和 Kubernetes)。我担心的是,我有 20 多个上述批处理任务,并且每个流应用程序都需要“运行”才能每 10 分钟间隔触发一次。

在阅读了 Spring Cloud Task 后,我注意到它更适合我的使用,不需要流应用程序持续运行(短暂的)。但是,它没有 OOTB 可供使用我需要的任务应用程序:ftp-source 和 ftp-sink。

除此之外,使用 Spring Cloud Task 不允许我将 XML 文件从上一个任务应用程序传递到下一个任务应用程序。根据以下方式将数据从一个任务传递到另一个任务似乎是一种代码味道评论这个问题 https://stackoverflow.com/questions/44303954/spring-cloud-task-how-to-pass-messages-or-flag-between-two-apps.

然后,为了实现上述用例,task-app-1将下载xml文件并输出到某个存储,然后task-app-2从存储中获取xml文件并执行自定义转换并上传到另一个存储。然后,task-app-3 获取 xml 文件并上传到 ftp。这样合适吗??

除此之外,我还有使用上述用例注册多个流并通过外部源(SCDF REST API)触发流部署的想法?这会违背现有任务计划功能的目的吗?

任何人都可以就此提出建议吗?


对于您的情况,正如您所知,您需要创建一组执行您的要求的批处理作业。你可以检查this https://dataflow.spring.io/docs/recipes/file-ingest/sftp-to-jdbc/示例作为参考。 此外,您还可以使用组合任务运行器来驱动这种特定情况。有关组合任务的更多信息,您可以参考文档 https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-composed-tasks和一个例子here https://dataflow.spring.io/docs/batch-developer-guides/batch/data-flow-composed-task/#create-and-launch-a-composed-task-using-data-flow

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Cloud Stream 应用程序 VS Spring Cloud Task 应用程序 的相关文章

随机推荐