在使用activeMQ的時候(沒有集成spring),發現當broker掛掉或者重啓的時候,consumer就會斷開,不會在次嘗試去接受消息,
(使用spring集成activeMQ)會解決這個問題.
如果說你不想使用spring,那麼接下來告訴你該怎麼辦.
在apache官網上有介紹自動重連機制.
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_USER,
"failover:(tcp://host:61616)?initialReconnectDelay=1000&maxReconnectDelay=30000");
加入failover參數.(
failover:(tcp:url...)url 可以爲多個
)
當時我在環境中測試的時候,會出現一個情況,就是當broker掛掉的時候,consumer會斷開程序
根據
http://blog.csdn.net/kimmking/article/details/8447517
這篇文章所講是需要修改activeMQ-core.5.x.jar 中的
FailoverTransport.java
reconnectTaskFactory = new TaskRunnerFactory();
System.out.println("init-setDaemon-false");
reconnectTaskFactory.setDaemon(false);/**設置爲false*/
reconnectTaskFactory.init();
修改方法:
把source.jar中的FailoverTransport.java 拉到項目的src下(保證包名一致,引入相關依賴)
修改-編譯-啓動
這時候程序就會去加載src下面FailoverTransport.java
而不會去jar包中搜索該類