具有被动故障转移消费者的RabbitMQ单活动消费者

ind*_*dit 9 scalability rabbitmq

我有一个可以水平缩放的API.API将确认客户端请求,并且需要将工作分派给辅助系统.辅助系统需要以先到先得的方式处理工作,即队列.此外,由于辅助系统正在访问可共享的资源,因此在给定时间只有一个实例可以是活动的.辅助系统需要具有故障转移机制.如果辅助系统的第一个实例发生故障,则另一个实例需要取代它.

我正在考虑使用RabbitMQ作为排队机制,并且有多个消费者连接,但只有一个活跃的消费者将处理工作.如果先前活动的消费者未能确认消息,则其他实例之一将处理处理消息的工作.RabbitMQ可以实现吗?

也可以在作业完成后才确认消息?

谢谢.

dee*_*dir 5

这可以通过 RabbitMQ 的新版本实现:https : //www.rabbitmq.com/consumers.html#single-active-consumer


Mat*_*uto 0

在这种情况下,我建议在队列中复制消息,例如。如果一条消息有 3 个消费者,最好构建 3 个队列,并通过交换器在这 3 个队列上复制消息。



另外,是否可以仅在作业完成后确认该消息?
是的,你可以在你的代码中移动确认,在你的情况下,在详细说明消息之后。