春云| 收集来自多个目的地的响应

用户1189332

我在考虑 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章