【发布时间】:2015-04-09 18:11:01
【问题描述】:
我的 RabbitMQ 设置中有一个场景,我很好奇如何解决。下图说明了它(为简洁起见,删除了交换和大多数队列):
场景
- 生产者创建消息 A(1),它被顶级消费者接收,并开始处理该消息。
- 生产者创建消息 A(2),它被底层消费者接收(假设两个消费者都在循环交换中)。
- 底层消费者发布消息B(2),进入消息B消费者队列
- 可怜的慢速顶级消费者终于完成并发出它的消息 B(1)。
问题
如果我们假设 B 消费者不能是幂等的,我们如何确保两个 B 消息的结果都以正确的顺序应用?
我曾考虑使用应用于消息 A 的初始发布的时间戳,并让消费者维护上次更改的时间戳,拒绝该时间之前的任何时间戳,但这只有在每条消息导致完全相同的情况下才有效一种变化,需要大量跟踪。
我们将不胜感激有关如何解决此问题的其他想法。谢谢!
【问题讨论】:
标签: rabbitmq message-queue distributed-computing