如何通过相关 ID 将 RabbitMq 消息聚合为单个消息

Posted

技术标签:

【中文标题】如何通过相关 ID 将 RabbitMq 消息聚合为单个消息【英文标题】:How to aggregate RabbitMq messages into single message by correlation ID 【发布时间】:2017-01-09 02:22:10 【问题描述】:

假设我有一个需要按顺序执行的命令管道,并且其中一些命令包含应该并行执行的多个操作(相同的关联 ID)。假设我需要知道所有并行操作何时执行,以便在管道中继续执行。

在不使用数据库等外部数据源的情况下,是否可以单独使用交换和队列来实现这种编排?

我对以下用例感兴趣: 我刚刚在同一个队列上发布了 3 条相同类型的消息。这些消息正在并行处理。我只想在所有相同关联 ID 的消息都成功完成后发布一条新消息。

有没有办法通过 RabbitMQ 实现这一点?

【问题讨论】:

【参考方案1】:

听起来您可以使用分散-聚集模式。这用图表很好地解释了这种模式:

http://www.enterpriseintegrationpatterns.com/patterns/messaging/BroadcastAggregate.html

这里有一个关于如何使用 RabbitMQ 实现的教程: http://geekswithblogs.net/michaelstephenson/archive/2012/08/06/150373.aspx

【讨论】:

链接的博客不见了,在web.archive.org/web/20120815011215/geekswithblogs.net/…查看它

以上是关于如何通过相关 ID 将 RabbitMq 消息聚合为单个消息的主要内容,如果未能解决你的问题,请参考以下文章

如何保证消息队列的可靠性传输?

3.RabbitMQ相关概念的杂谈

RabbitMQ

如何确保消息正确地发送至RabbitMQ? 如何确保消息接收方消费了消息?

RabbitMQ 相关概念

RabbitMQ 相关概念