RabbitMQ:通过一致的哈希交换扩展队列

问题描述 投票:0回答:1

(摘自 Github Issue

我们使用 RabbitMQ 的一致性哈希交换,这对于将路由密钥从交换器分片到多个队列非常有用。

我们利用队列向工人分发工作。理想情况下,我们希望动态扩展这些工作人员,但这会带来问题。

要扩展,您需要添加新的队列和绑定。就其本身而言,这并不是什么大问题 - 除了分片键现在可能开始进入不同的队列这一事实之外。

因此,工作人员 A 可能一直在管理 Thing1,但现在当我们添加新队列时,工作人员 B 可能最终会获取 Thing1 的消息。重要的是,在工作程序 B 开始获取 Thing1 消息之前,工作程序 A 已完成所有 Thing1 处理。

有什么方法或插件可以缓解这个问题吗?

rabbitmq rabbitmq-exchange
1个回答
0
投票

在这种情况下,我将使用一个工人来调度消息而不是哈希交换。

生产者1 ...生产者=>主题交换=>队列=>调度程序工人=>队列1...队列=>工人1...工人

这样调度员就可以跟踪所有消息。为此,您可以简单地检查队列中剩余多少消息,或者您可以检查工作确认消息,或者您可以使用rabbitmqs RPC功能。

© www.soinside.com 2019 - 2024. All rights reserved.