Py学习  »  MQ

rabbitmq:当使用者关闭时发布消息,并且之后的使用者不能在没有命名队列的情况下使用消息

Niloy Datta • 4 年前 • 845 次点击  

我有生产者和消费者。 多个实例 的消费者正在运行。当producer发布消息时,我的意图是通过所有实例使用消息。所以,我用的是直接交换。生产者将消息发布到与主题的直接交换。消费者正在使用独占队列收听该主题。当用户启动并且生产者发布消息时,此过程运行良好。但当消费者情绪低落,生产者发布一条消息时,消费者不会在情绪高涨时消费这条消息。

我在谷歌上搜索了这个问题。建议使用命名队列。但是如果我使用命名队列,消息将按照循环算法被消耗。这不符合我的期望,即所有的消费者都会使用相同的信息。

还有别的办法吗?

感谢你的帮助。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40519
 
845 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Artandor
Reply   •   1 楼
Artandor    5 年前

你的问题有两种解决方法。

使用命名队列就是其中之一。 将Exchange设置为扇出模式,并为其订阅命名队列。这样,当发布服务器在您的Exchange中发送消息时,它将被分派到所有侦听的队列。

然后,每个队列可以有一个或多个使用者(允许您进行缩放)。您必须定义一个命名队列/消费者。当一个消费者断开连接时,他的队列仍然接收消息,当他回来时,他可以消费这些消息。

你应该可以那样做你想做的事。

另一种方法是为了你的个人知识,因为你说你想使用rabbitmq。但在这种情况下,您可以使用kafkha,然后,在重新连接之后,您的使用者可以在断开连接时的消息索引处恢复。

如果不起作用,请更新我:)