春云|收集来自多个目的地的回复

时间:2017-08-02 06:02:24

标签: spring-boot spring-cloud spring-cloud-stream

我认为Spring Cloud Stream是否适合我们正在考虑建立的特定系统。目前正在使用Monolith(ESB),但我们希望受益于微服务(特别是春季云生态系统)的优点。

我们以5个请求/秒的速率接收来自输入源(JMS队列,ActiveMQ具体)的请求。

我们需要有不同的路由规则(基于有效负载或某些派生逻辑)并将消息路由到不同的输出目的地(比如A,B,C)。输出目标是JMS队列。

最后,我们必须收到来自A,B,C的3个回复(通过收听不同的队列)并混搭最终的回复。此响应最终被分派到另一个输出通道(它是另一个JMS队列)。

有一些极端情况,例如当A的响应超过' 5'几秒钟,然后我们想要混淆' B'和' C'以及' A'的错误对象。同样适用于' B'和' C'太

此外,目的地' A'' B'和' C'是动态的。我们可以有更多的目标系统' D' E' E'等等。如果引入新系统,我们正在考虑不必更改主编排层。

Spring Cloud Stream是正确的选择吗?在聚合来自多个JMS队列的响应(带有超时)并混搭响应的情况下,我正在寻找更具体的指针。

1 个答案:

答案 0 :(得分:1)

对于Aggregator EIP或其更强大的朋友Scatter-Gather,您所谈论的内容已足够。

它们都可以在Spring Integration中使用:

因此,您需要有一些correlationKey才能收集到同一组的所有回复,最后汇总。

此外还有group-timeout选项,允许您在一段时间后没有所有回复时发布群组。