在使用activeMQ的时候(没有集成spring),发现当broker挂掉或者重启的时候,consumer就会断开,不会在次尝试去接受消息,java
(使用spring集成activeMQ)会解决这个问题.spring
若是说你不想使用spring,那么接下来告诉你该怎么办.apache
在apache官网上有介绍自动重连机制.tcp
connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_USER, "failover:(tcp://host:61616)?initialReconnectDelay=1000&maxReconnectDelay=30000");
加入failover参数.(测试
failover:(tcp:url...)url 能够为多个
)
url
当时我在环境中测试的时候,会出现一个状况,就是当broker挂掉的时候,consumer会断开程序
根据
http://blog.csdn.net/kimmking/article/details/8447517
这篇文章所讲是须要修改activeMQ-core.5.x.jar 中的
FailoverTransport.java
.net
reconnectTaskFactory = new TaskRunnerFactory(); System.out.println("init-setDaemon-false"); reconnectTaskFactory.setDaemon(false);/**设置为false*/ reconnectTaskFactory.init();######## 修改方法: 把source.jar中的FailoverTransport.java 拉到项目的src下(保证包名一致,引入相关依赖) 修改-编译-启动 这时候程序就会去加载src下面FailoverTransport.java 而不会去jar包中搜索该类