Spring Cloud |收集来自多个目的地的响应

Spring Cloud |收集来自多个目的地的响应

问题描述:

我在考虑Spring Cloud Stream是否适合我们正在考虑建立的特定系统。目前有一个Monolith(ESB)目前正在使用,但我们希望通过微服务的良好性(尤其是春季云生态系统)获益。Spring Cloud |收集来自多个目的地的响应

我们以5个请求/秒的速率接收来自输入源(JMS队列,ActiveMQ具体)的请求。我们需要有不同的路由规则(基于有效负载或某些派生逻辑),并将消息路由到不同的输出目的地(比如A,B,C)。输出目标是JMS队列。

最后,我们必须从A,B,C(通过听不同的队列集)接收3个响应,并混合最终响应。这个响应最终被分发到另一个输出通道(这是另一个JMS队列)。

有几个例子,比如当A的响应超过'5'秒时,我们要混合'B'和'C'的响应以及'A ”。 'B'和'C'也一样。

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

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

+0

此主题实在太宽泛。您可以使用带有JMS联编程序的Spring Cloud Stream,您可以使用Spring Integration或Apache Camel。所有这些堆栈都可以做你想做的事。您需要编写一些概念验证代码,而不是SO帖子。 – Strelok

你说的是对于Aggregator EIP或其更强大的朋友Scatter-Gather完全足够。

他们都在Spring集成可供选择:

所以,你需要有一些correlationKey能够所有响应聚集到同小组最后汇总。

此外还有group-timeout选项,允许您在一段时间后没有全部回复时释放组。