我认为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队列的响应(带有超时)并混搭响应的情况下,我正在寻找更具体的指针。
答案 0 :(得分:1)
对于Aggregator EIP或其更强大的朋友Scatter-Gather,您所谈论的内容已足够。
它们都可以在Spring Integration中使用:
因此,您需要有一些correlationKey
才能收集到同一组的所有回复,最后汇总。
此外还有group-timeout
选项,允许您在一段时间后没有所有回复时发布群组。