在使用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.youkuaiyun.com/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包中搜索该类