RabbitMQ临时队列定期死亡

时间:2020-04-30 06:25:30

标签: rabbitmq easynetq

我正在使用RabbitMQ将长时间运行的进程状态更改传达给Web服务器。 Application Server将事件发布到队列中,而Web Server将使用这些事件。

队列是临时的(x过期时间:300000,自动删除:true),并且在Web应用程序首次启动时启动。

我面临的问题是队列定期消失。我发现一个问题与RequestedHeartbeat设置有关。由于我们在Web服务器上也有一些长期运行的任务,因此队列会定期消失。在我增加其价值之后,在网络上长期运行的任务就可以正常工作。

但是,队列仍然周期性地死掉。 Rabbit MQ的日志文件越来越多,出现以下错误。其中一些错误来自其他环境dev / staging / uat,但存在相同的错误

2020-04-30 01:16:15.218 [error] <0.3578.286> Channel error on connection <0.30037.285> (10.10.122.111:25734 -> 10.10.234.111:5672, vhost: '/', user: 'someuser'), 
channel 5: operation basic.consume caused a channel exception not_found: no queue 'QueueNo132321011360' in vhost '/'

另外, 1)如何检测临时队列已死?

2)从Web Server更新临时队列的最佳机制是什么?

1 个答案:

答案 0 :(得分:1)

如果建议保留x过期时间,但将auto-delete更改为false,那么您的队列将在客户端暂时断开连接后幸存(除非您当然不担心丢失消息)。