我在用:
-
RabbitMQ 3.5.1
-
Java RabbitMQ客户端
-
具有两个RabbitMQ实例的集群
我的队列是:
-
Durable = false
-
Exclusive = false
-
自动删除= true
-
队列镜像不影响结果
在我的应用程序中,有一个异步消费者通过回调接收消息 . 当我尝试通过禁用与代理的网络通信来模拟连接失败时,会发生此问题 . 在重新 Build 连接后,队列(在Web管理界面中)显示两个使用相同使用者标记连接但具有不同端口号的使用者 .
当我停止应用程序时,其中一个消费者消失,但另一个保持连接,因此队列不会被删除 . 这是预期的还是我必须改变一些东西以避免这种情况?
1 回答
有两个连接,因为默认心跳是580秒,因此服务器需要花费时间检测它 .
当该值设置为较低值时,第一个连接立即关闭 . 有关Detecting Dead TCP Connections with Heartbeats中心跳选项的更多详细信息
感谢Gas提供使用RabbitMQ用户组论坛的提示 .