我在带有网络连接器的ActiveMQ中有一个奇怪的行为。这是设置:
我可以清楚地看到双工连接已建立,但B上的消费者没有收到任何消息。
在jconsole上我可以看到代理A正在向网络消费者发送消息,最多达到预取限制(1000条消息)的值,这似乎很好。 " DispatchedQueue"," DispatchedQueueSize",更重要的是" MessageCountAwaitingAck" 计数器具有相同的值:它们卡住到1000 。
在代理B上,队列大小为0.
在系统级别,我可以清楚地看到经纪人A和经纪人B之间已建立的联系:
# On broker A (192.168.x.x)
$ netstat -t -p -n
tcp 89984 135488 192.168.x.x:61616 172.31.x.x:57270 ESTABLISHED 18591/java
# On broker B (172.31.x.x)
$ netstat -t -p -n
tcp 102604 101144 172.31.x.x:57270 192.168.x.x:61616 ESTABLISHED 32455/java
奇怪的是:经纪人A和B上的recv-q和send-q似乎有一些数据未被另一方读取。他们不会增加或减少,他们只是坚持这些价值观。
即使在TRACE级别,双方的ActiveMQ日志也不会说太多。
似乎经纪人A或经纪人B都没有向另一方发送消息。
怎么可能?什么是潜在的原因和解决方法?
编辑:我应该补充一点,我在双方使用嵌入式ActiveMQ 5.13.4。
感谢。