为什么在RabbitMQ中连接恢复后会出现重复的消费者?

Tor*_*san 5 java amqp rabbitmq

我在用:

  • RabbitMQ 3.5.1
  • Java RabbitMQ 客户端
  • 具有两个 RabbitMQ 实例的集群

我有一个队列:

  • 耐用=假
  • 排他性=假
  • 自动删除=真
  • 队列镜像不影响结果

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

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

Tor*_*san 2

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

当该值设置为较低值时,第一个连接立即关闭。有关心跳选项的更多详细信息,请参阅使用心跳检测失效 TCP 连接

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