如何级联 Spring Cloud Dataflow 流?

How to cascade Spring Cloud Dataflow streams?

我知道我可以在 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 也会写回管道,所以我可以级联它们并从 [=22 调用它们=].

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

正如评论中所问,让我详细说明一下我想在这里解决什么样的问题。

我工作的组织有复杂的流程,1 个团队不能维护整个事情,有数据生产者团队负责从源生成数据,直到最终的数据消费者通常有很多团队推断数据、转换、规范化等

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

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

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

方案一:将processor+sink的职责合并为一个"processor";如果这样做了,您将能够将摄取(或)摄取 + 处理(或)摄取 + 处理 + 写入作为流管道的单独片段使用,并能够在 DSL 或 GUI 中使用它们。当然,这里组合的缺点是无法独立交互和升级业务逻辑,这对于一些用例来说可能不是问题。换句话说,您不一定需要将它们作为单独的微服务 - 如果职责很薄,将它们组合在一个应用程序中就完全没问题了。

选项 2:不要使用 SCDF。构建一组与之前讨论的类似的应用程序,并将它们编排为独立的应用程序。您不必处理 SCDF 中的源、处理器或接收器合同,因此您可以灵活地以您希望的任何方式插入应用程序。这里的缺点是手动编排。用于监控的数据管道可见性是另一回事。参见示例 here. If you still want to use it in SCDF, though it may not be ideal, there's a workaround - see here.

选项 3: 您还可以使用 Spring 集成构建集成流,并将其构建到 SCSt 应用程序中。这可以提供更精细的控制,但您必须像选项 2 中那样单独编排它们。这是一个 example.

使用路由器接收器连接流。 @sabby?

https://github.com/spring-cloud/spring-cloud-stream-modules/tree/master/router-sink