的RabbitMQ:与一致性哈希交换

(从Github Issue拾)的RabbitMQ:与一致性哈希交换

缩放队列,我们​​使用的RabbitMQ的consistent hash exchange这是从交流到多个队列分片路由键有用。

我们使用队列将工作交给工人。理想情况下,我们希望动态扩展这些工作人员,但这会带来问题。

要扩大规模,您需要添加一个新的队列和绑定。在它自己的情况下,这不是什么大问题 - 除了分片密钥现在可能开始进入不同队列的事实。

所以工作者A可能一直在管理Thing1,但现在当我们添加新的队列时,工作者B可能最终得到Thing1的消息。在工作者B开始获取Thing1消息之前,工作者A完成所有Thing1处理是很重要的。

他们有任何方法或插件可以缓解这个问题吗?

回答:

在这种情况下,我会使用调度消息而不是散列交换的工作人员。

producer1 ... producern =>话题交换=>队列=>调度工人=>队列1 ... queuen => worker1 ... workern

通过这种方式,调度人员可以跟踪所有消息。为此,您可以简单地检查队列中留下了多少消息,或者您可以检查工作人员确认消息,或者可以使用rabbitmqs RPC功能。

以上是 的RabbitMQ:与一致性哈希交换 的全部内容, 来源链接: utcz.com/qa/263359.html

回到顶部