我目前正在使用 activemq 故障转移 uir 来让客户端重新连接到代理,而且我也不这样做
希望“发送”操作在断开连接时被阻止,所以我使用像 failover:(tcp://192.168.193.177:61616)?timeout=1
这样的 URI,而问题是我是否可以第一次连接不上,连接超时,重新连接也不行,我得到的异常是:
Dec 7, 2011 3:39:28 PM org.apache.activemq.transport.failover.FailoverTransport oneway INFO: Failover timed out after 2ms Dec 7, 2011 3:39:28 PM org.apache.activemq.transport.failover.FailoverTransport doReconnect INFO: Successfully connected to tcp://127.0.0.1:61616 Exception in thread "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) at com.cicc.mdf.dataserver.service.MarketDataService.process(MarketDataService.java:984) at com.cicc.mdf.message.parser.BroadcastMessageParser.parseElement(BroadcastMessageParser.java:219) at com.cicc.mdf.connectivity.RawDataParser.slice(RawDataParser.java:433) at com.cicc.mdf.connectivity.RawDataParser.run(RawDataParser.java:110) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
我认为超时参数仅适用于发送操作,不会干扰重新连接,但是第一次连接?
编辑:如果java客户端第一次成功连接到代理,那么如果连接断开,发送操作将在连接未建立时超时,并且java客户端将重新连接到代理,这就是我的意思预期的。 而如果java客户端第一次无法成功连接到代理,连接将超时,直到成功才尝试重新连接,这是我意想不到的,我是否有什么地方错了?
编辑:Activemq 版本:5.3.0
编辑:抱歉,URI 有效,这是我的错误,我被另一个异常搞糊涂了
有什么想法吗?
谢谢
ps:这是我第一次上Stackoverflow,如有不合常规的地方,请指正
最佳答案
您的 URI 似乎有效。您能解释一下“重新连接不起作用”是什么意思吗?指数回退是否会增加得如此之多,以至于您认为它不会重新连接?
您可以禁用它并重试:
failover:(tcp://localhost:61616)?useExponentialBackOff=false
请附上您客户端的一些日志,我们可能会获得有关重新连接不起作用的原因的更多信息。 您使用的 ActiveMQ 客户端是什么? java ? C++? C#?
关于java - 使用 activemq 故障转移 URI 重新连接,而首次连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428131/