我目前正在使用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,任何非常规行为,请更正
答案 0 :(得分:0)
您的URI似乎有效。你能解释一下“重新连接不起作用”是什么意思吗?可能是指数回退增加太多你认为它没有重新连接?
您可以将其停用并重试:
failover:(tcp://localhost:61616)?useExponentialBackOff=false
请包含您客户的一些日志,我们可能会获得有关重新连接无效的原因的更多信息。 您使用的ActiveMQ客户端是什么? Java的? C ++? C#?