使用ActiveMQ-5.10。
重启经纪人后,客户端似乎无法恢复,永远吐槽。客户端抛出
[2014-12-18 18:17:58,852[StatsCollector-3]jmx.TCAQueueSizeMonitor.getPendingQueueSize():68 ERROR]:获取TCA队列大小状态时出现异常!!!javax.jms.IllegalStateException:会话已关闭
at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:767)
at org.apache.activemq.ActiveMQSession.createBrowser(ActiveMQSession.java:1425)
at org.apache.activemq.jms.pool.PooledSession.createBrowser(PooledSession.java:294)
at moss.jmx.TCAQueueSizeMonitor.getPendingQueueSize(TCAQueueSizeMonitor.java:63)
at moss.jmx.TCAQueueSizeMonitor.getTCAQueueSizeStatus(TCAQueueSizeMonitor.java:101)
at moss.jmx.TCAHeartBeatStatsCollector.run(TCAHeartBeatStatsCollector.java:60)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
会话关闭一次,然后在它之后不断出现以下异常:
[2014-12-19 00:00:06,176[securityEventDataSubscriberContainer-4105]listener.DefaultMessageListenerContainer.handleListenerSetupFailure():842 WARN]:目标'topic://check.newSecurityPublish'的JMS消息侦听器调用器设置失败-尝试恢复。原因:org.apache.actiemq.ConnectionFailedException:JMS连接失败:连接被拒绝
[2014-12-19 00:00:06,476[securityEventDataSubscriberContainer-4105]listener.DefaultMessageListenerContainer.刷新连接成功():891信息]:成功刷新JMS连接
请注意,我们只看到一个客户,有时也是如此。其他客户能够与经纪人正常沟通。
谢谢,阿努
通常客户端库不会实现与代理的自动重新连接选项。我从未使用过ActiveMQ
,但我对RabbitMQ
有很好的经验,它是另一台与ActiveMQ类似的服务器。我编写了代码来处理C#上的服务器断开连接。
你必须做这些事情来实现它,C#和Java有类似的行为,所以你可以很容易地在java上实现它。
希望这能帮助你处理这个问题。我对java了解不多,所以我不能提供代码示例来帮助你。