我在考虑 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 队列(带有超时)的响应并混合响应。
您所说的对于聚合器EIP 或其更强大的朋友Scatter-Gather来说完全足够了。
它们都在 Spring Integration 中可用:
因此,您将需要一些correlationKey
能够收集对同一组的所有响应以最终聚合。
还有一个group-timeout
选项允许您在一段时间后没有所有回复时释放组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句