我想要达到这样的目标:
[Source] --> [Splitter] --B--> [Processor] --B--> [Aggregator] ---> [Sink]
| ^
| |
|--------------------C-------------------|
在包含业务逻辑的几个处理器之后, 特殊的生产者应该发出几个B类消息以及一个控制消息C.
具有更多业务逻辑的处理器将处理这些消息。
聚合器应该"收集"所有结果以及控制信息。
控制消息基本上包含生成消息(B)的数量,因此聚合器可以知道是否
我知道,聚合器可以通过使用消息头来推断出从分割器中获得的消息数量,但如果没有消息到达它,它也会超时吗?
一般来说:变形金刚是否可以有多个输入或输出通道?
答案 0 :(得分:1)
2首先 -
标准聚合器模块具有timeout
参数(默认为50秒)。
它是通过每个超时秒运行的消息组存储收割器实现的 - 因此实际超时最多为2 x timeout
,平均值为1.5 x timeout
。
聚合器现在具有group-timeout
属性,比使用reapear更准确;它需要一个自定义聚合器处理器来使用它。它还有一个group-timeout-expression
,因此超时可能会因运行时条件(例如当前组大小)而异。
现在1 -
没有标准机制将边带数据从1个模块发送到另一个模块。通常,模块通过设置消息头来相互通信。这就是标准拆分器如何向聚合器(sequenceNumber
和sequenceSize
标头)发送信息的方式。
您可以使用自定义ReleaseStrategy
创建自定义聚合器处理器,以使用其他标头。
一般来说:变形金刚是否可以有多个输入或输出通道?
不是XD,而是后续项目(spring-cloud-stream)支持将多个输入/输出绑定到应用程序。