我有以下问题: 我尝试使用以下代码连接到ActiveMQ代理(现在已关闭)
connectionFactory = new ActiveMQConnectionFactory(this.url + "?timeout=2000");
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
LOGGER.info("Connected to " + this.url);
问题是超时没有任何影响
connection.start()
永远被封锁。 我检查了ActiveMQ日志并找到了以下信息:
2013-12-20 01:49:03,149 DEBUG [ActiveMQ Task-1] (FailoverTransport.java:786) - urlList connectionList:[tcp://localhost:61616?timeout=2000], from: [tcp://localhost:61616?timeout=2000]
2013-12-20 01:49:03,149 DEBUG [ActiveMQ Task-1] (FailoverTransport.java:1040) - Connect fail to: tcp://localhost:61616?timeout=2000, reason: java.lang.IllegalArgumentException: Invalid connect parameters: {timeout=2000}
此处指定了超时参数http://activemq.apache.org/cms/configuring.html
有没有人知道如何将超时参数传递给ActiveMQConnectionFactory? 或者如何为connection.start()设置超时? 谢谢!
更新:我在Stackoverflow上找到了这个:ActiveMQ - CreateSession failover timeout after a connection is resumed。我尝试了但是引发了以下异常:
javax.jms.JMSException: Could not create Transport. Reason: java.lang.IllegalArgumentException: Invalid connect parameters: {transport.timeout=5000}
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)
我使用maven repo的ActiveMQ 5.8.0
答案 0 :(得分:9)
在尝试设置超时属性时,似乎您的网址仍然无效。
如果您正在尝试拥有一个故障转移URL,它看起来像是因为它正在进入故障转移代码,那么您可能正在寻找initialReconnectDelay(可能还有maxReconnectAttempts,如果服务器是在达到尝试次数后仍然下降。)
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("failover://(tcp://localhost:61616)?initialReconnectDelay=2000&maxReconnectAttempts=2");