重连

使用Spring Jms连接ActiveMQ 重连问题的一点心得

不想你离开。 提交于 2019-12-02 22:25:25
我们现在做的Web项目遇到一个问题,项目启动时使用Failover方式连接某个ActiveMQ,brokerUrl类似 failOver:(tcp://xxx.xxx.xxx.xxx:61616),如果ActiveMQ启动正常,项目启动正常; 但如果ActiveMQ没有启动,项目将无法启动完成,一直卡在连接ActiveMQ阶段。 经过调查,发现是ActiveMQ提供的FailOver Transport方式导致的。 FailOver Transport有maxReconnectAttempts和startupMaxReconnectAttempts两个连接参数。 前者是FailOver Transport最大的重连次数,后者是启动阶段的最大重连次数,由于我们原先的连接这两个参数没有设置值,它们都沿用默认值-1,表示无限次重连,直到连接成功为止。这样,只要我们在启动项目时不启动ActiveMQ,FailOver Transport将一直尝试重连,导致后续程序加载无法进行,从而项目启动卡住。 找到了原因之后,我们在brokerUrl中设置startupMaxReconnectAttempts=2,形如: failOver:(tcp://xxx.xxx.xxx.xxx:61616)?startupMaxReconnectAttempts=2