(Picking up from a Github Issue)
我们使用RabbitMQ的一致性哈希交换,它有助于将路由键从一个交换器分片到多个队列。
我们使用队列向工人们分配任务。理想情况下,我们希望动态缩放这些工作程序,但这会带来问题。
要扩展规模,您需要添加新的队列和绑定。单独来看,这并不是什么大问题——除了分片键可能现在开始流向不同的队列。
例如,Worker A可能一直在处理Thing1,但现在随着我们添加新队列,Worker B可能会接收Thing1的消息。重要的是,Worker A在 Worker B开始接收Thing1消息之前已经完成所有Thing1的处理。
是否有任何方法或插件可以缓解这个问题?
我们使用RabbitMQ的一致性哈希交换,它有助于将路由键从一个交换器分片到多个队列。
我们使用队列向工人们分配任务。理想情况下,我们希望动态缩放这些工作程序,但这会带来问题。
要扩展规模,您需要添加新的队列和绑定。单独来看,这并不是什么大问题——除了分片键可能现在开始流向不同的队列。
例如,Worker A可能一直在处理Thing1,但现在随着我们添加新队列,Worker B可能会接收Thing1的消息。重要的是,Worker A在 Worker B开始接收Thing1消息之前已经完成所有Thing1的处理。
是否有任何方法或插件可以缓解这个问题?