rabbitmq 用于聊天应用程序的单个队列但分布式使用者

q1qsirdb  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(2)|浏览(153)

如何为单个RabbitMQ队列定义分布式消费者,其中每次只有一个消费者处理消息?
到目前为止,我已经尝试使用channel.set_qos(prefetch_count=1, global=False)
也尝试使用channel.declare_queue(exclusive=True)以及,但没有运气到目前为止。
作为一个聊天应用程序,我们希望按顺序处理消息。如何解决这个问题?
我们不希望消费者使用单个服务器,因为如果任何时候该服务器出现故障,那么一切都将停止。
请注意,由于我们要在多个服务器之间分配使用者,因此通道/连接对象不能相同。

lztngnrs

lztngnrs1#

您需要使用“单活动消费者”来实现相同的目的。有关更多详细信息,请参阅-https://www.rabbitmq.com/consumers.html#single-active-consumer

queue = await channel.declare_queue(name=self.queue_name,arguments={"x-single-active-consumer": True})
xmq68pz9

xmq68pz92#

你看过独家标志了吗?
它似乎适合您的使用情形,确保单个使用者仍然有备用使用者定期尝试连接,以便在以前的活动使用者出现故障时可以继续工作。

相关问题