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

时间:2019-01-10 08:38:03

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

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

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

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

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

此外,使用Spring Cloud Task不允许我将XML文件从上一个任务应用程序传递到下一个任务应用程序。似乎是根据comment in this question在任务之间传递数据的一种代码味道。

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

除此之外,我还想在上述用例中注册多个流,并通过外部源(SCDF REST API)触发流的部署?这是否会破坏现有任务计划功能的目的?

有人可以对此提出建议吗?

1 个答案:

答案 0 :(得分:0)

对于您的情况,根据您的了解,您需要创建一组执行您的要求的批处理作业。您可以查看this示例作为参考。 同样,您可以潜在地使用Composed Task Runner来驱动此特定情况。有关组合任务的更多信息,可以参考documentation和示例here