为什么在RabbitMQ中连接恢复后存在重复的使用者?

时间:2015-07-06 16:28:06

标签: java rabbitmq amqp

我正在使用:

  • RabbitMQ 3.5.1
  • Java RabbitMQ客户端
  • 包含两个RabbitMQ实例的群集

我的队列是:

  • 耐用=假
  • 独家=假
  • 自动删除=真
  • 队列镜像没有影响结果

在我的应用程序中,有一个异步消费者通过回调接收消息。 当我尝试通过禁用与​​代理的网络通信来模拟连接失败时,会发生此问题。重新建立连接后,队列(在Web管理界面中)显示两个使用相同使用者标记连接但具有不同端口号的使用者。

当我停止应用程序时,其中一个消费者消失,但另一个消费者保持连接,因此队列不会被删除。这是预期还是我必须改变一些东西以避免这种情况?

1 个答案:

答案 0 :(得分:1)

有两个连接,因为默认心跳是580秒,因此服务器需要花费时间才能检测到它。

当该值设置为较低值时,第一个连接立即关闭。 有关Detecting Dead TCP Connections with Heartbeats

中心跳选项的更多详细信息

感谢Gas提供使用RabbitMQ用户组论坛的提示。