使用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]:JMS消息监听器调用程序的设置失败,目的地为'topic://check.newSecurityPublish' - 试图恢复。原因:org.apache.activemq.ConnectionFailedException:JMS连接失败:连接被拒绝
[2014-12-19 00:00:06,476 [securityEventDataSubscriberContainer-4105] listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful():891 INFO]:成功刷新JMS连接
请注意,我们仅在一个客户端看到此信息,有时也会看到这一点。其他客户可以正确地与经纪人沟通。
谢谢, Anuj
答案 0 :(得分:-1)
通常,客户端库不会与代理实现自动重新连接选项。我从未与ActiveMQ
合作过,但我对RabbitMQ
有很好的经验,这是另一台与ActiveMQ类似的服务器。我编写了代码来处理C#上的服务器断开连接。
你必须做这些事情来实现它,C#和Java有类似的行为,所以你可以在java上轻松实现它。
希望这可以帮助您解决问题。我没有太多的Java曝光,所以我无法提供代码示例来帮助你。