如何级联Spring Cloud Dataflow流?

时间:2018-07-27 18:23:32

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

我知道我可以在Streams DSL中使用扇入和扇出符号在同一流中级联多个流修饰符,例如:

s3 > :data
ftp > :data
http > :data
:data > file

但是,假设我已经注册了stream1和stream2,并且每个都有自己的DSL,那么我如何才能级联这两者,并执行类似的操作?

例如:

stream1 DSL:

time | transform | file

stream2 DSL:

file | filter | http

然后我要创建类似stream3的内容:

stream1 | stream2 | s3

将同时读取timefile的含义,并将结果写入filehttps3。可能吗?

我假设除了写入我指定的接收器外,stream1stream2也将写回到管道,因此我可以级联它们并从stream3进行调用

编辑-我正在尝试解决的问题。

按照评论中的要求,让我详细说明我要在此处解决的问题。

我工作的组织流程复杂,有1个团队无法维护全部工作,有数据生产者团队负责从源生成数据,直到最终数据消费者之前,通常有很多团队来推断数据,转换,规范化等。

在我的情况下,

stream1将由公司中的一个团队维护,steam2由其他团队维护,stream3由我的平台维护。

尽管维护每个流程的团队是独立的,但从技术上讲,我仍然希望在聚合不同的流程时从内存流水线中受益。当然,我希望自己能够解决一些问题,例如-团队1发布了新版本的stream1,将需要新版本的stream2-对于我的用例来说还不错-我的团队可以照顾好自己

2 个答案:

答案 0 :(得分:1)

有几种方法可以解决此问题。

选项1:将处理器+接收器的职责合并为一个“处理器”;如果完成了,您将能够将摄取(或)摄取+处理(或)摄取+处理+写入作为流传输管道的单独片段,并能够在DSL或GUI中使用它们。当然,这里组合的缺点是无法独立交互和升级业务逻辑,这在某些用例中可能不是问题。换句话说,您不一定需要将它们作为单独的微服务-如果责任很轻,那么将它们组合到一个App中就可以了。

选项2:不要使用SCDF。如前所述,构建一组类似的应用程序并将其编排为独立的应用程序。您无需处理SCDF中的源合同,处理器合同或接收合同,因此您可以灵活地以所需的任何方式插入应用程序。此处的缺点是手动编排。用于监视的数据管道可见性是另一回事。请参见示例here。如果您仍然想在SCDF中使用它,尽管它可能并不理想,但是有一种解决方法-请参见here

选项3:您还可以使用Spring Integration构建集成流,并将其构建到SCSt App中。这样可以提供更精细的控件,但是您必须像Option-2中那样单独编排它们。这是example

答案 1 :(得分:1)