首页 > 解决方案 > 当消费者在 Rabbit mq 中产生时丢失从发布者发送的消息

问题描述

我只是在探索 rabbit mq 主题https://www.rabbitmq.com/tutorials/tutorial-five-javascript.html
当我连续运行./receive_logs_topic.js "#"(消费者)并发布消息时它工作正常。

但是当我杀死消费者并通过发布者发送消息 2-3 次并再次启动消费者时,它不会处理我之前发送的消息。

我正在与兔子队列进行比较,只要消费者回来,它就会处理待处理的消息。

只是topics以这种方式工作还是我在搞乱一些配置?

标签: rabbitmq

解决方案


当您停止消费者时,它已声明的队列和绑定将被删除,因为它们是独占队列。由于 RabbitMQ 无处可路由消息,因此它们将被丢弃。

要解决此问题,您必须更改代码以使用发布者和消费者都声明的众所周知的队列(当然,使用绑定)。这样,启动哪个进程都没有关系。


注意: RabbitMQ 团队会监控rabbitmq-users 邮件列表,有时只会在 StackOverflow 上回答问题。


推荐阅读