社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MQ

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

Niloy Datta • 5 年前 • 961 次点击  

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

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

还有别的办法吗?

感谢你的帮助。

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

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

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

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

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

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

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