我所处的情况是这样的:
我有一个发布消息的线程。我也启用了热备(5秒)。我已经为连接添加了一个关闭监听器,以便我可以判断连接何时被丢弃,然后对其进行一些操作。
我可以通过管理web ui关闭连接,关机监听器按预期运行并重新连接。我可以关闭rabbitmq服务器并重新启动它,关闭监听器我们再次按预期运行。
问题是,当我使用iptables来REJECT数据包时,正在生成的线程和运行心跳的线程会锁定。
哪一个首先获得AMQChannel.processShutdownSignal获取_channelMutex的锁定,永远不会让它去。即使刷新了iptables,也不会解析线程锁定。
有什么想法吗?