使用activemq故障转移URI重新连接,而第一次连接时超时

时间:2011-12-08 08:27:09

标签: java activemq failover

我目前正在使用activemq failover uir来重新连接到代理,我也没有 希望“发送”操作在断开连接时被阻止,所以我使用的是像failover:(tcp://192.168.193.177:61616)?timeout=1这样的URI,而问题是如果我第一次无法获得连接,连接会超时而重新连接则不会工作,我得到的例外:

  

2011年12月7日下午3:39:28 org.apache.activemq.transport.failover.FailoverTransport单向     信息:故障转移在2ms后超时     2011年12月7日下午3:39:28 org.apache.activemq.transport.failover.FailoverTransport doReconnect     信息:已成功连接到tcp://127.0.0.1:61616     线程“pool-1-thread-2”中的异常java.lang.NullPointerException           at com.cicc.mdf.dataserver.messaging.JMSMessagePublisher.publish(JMSMessagePublisher.java:197)           at com.cicc.mdf.dataserver.messaging.JMSMessagePublisher.publishRealTimeData(JMSMessagePublisher.java:270)           在com.cicc.mdf.dataserver.service.MarketDataService.process(MarketDataService.java:984)           在com.cicc.mdf.message.parser.BroadcastMessageParser.parseElement(BroadcastMessageParser.java:219)           在com.cicc.mdf.connectivity.RawDataParser.slice(RawDataParser.java:433)           在com.cicc.mdf.connectivity.RawDataParser.run(RawDataParser.java:110)           at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)           在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)

我认为timeout参数仅适用于发送操作而不会干扰重新连接,但第一次连接?

编辑:如果java客户端第一次成功连接到代理,那么如果连接断开连接,发送操作将在连接未建立时超时,并且java客户端将重新连接到代理,即我是什么预期。     如果java客户端第一次无法成功连接到代理,连接将超时,而不是尝试重新连接,直到成功,我出乎意料,我有些错误吗?

编辑:Activemq版本:5.3.0

编辑:抱歉,URI是有效的,这是我的错误,我被另一个例外弄糊涂了

任何想法?

由于

ps:这是我第一次使用Stackoverflow,任何非常规行为,请更正

1 个答案:

答案 0 :(得分:0)

您的URI似乎有效。你能解释一下“重新连接不起作用”是什么意思吗?可能是指数回退增加太多你认为它没有重新连接?

您可以将其停用并重试:

failover:(tcp://localhost:61616)?useExponentialBackOff=false

请包含您客户的一些日志,我们可能会获得有关重新连接无效的原因的更多信息。 您使用的ActiveMQ客户端是什么? Java的? C ++? C#?