连接时ActiveMQ超时

时间:2013-12-20 00:03:24

标签: java jms activemq

我有以下问题: 我尝试使用以下代码连接到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

1 个答案:

答案 0 :(得分:9)

在尝试设置超时属性时,似乎您的网址仍然无效。

如果您正在尝试拥有一个故障转移URL,它看起来像是因为它正在进入故障转移代码,那么您可能正在寻找initialReconnectDelay(可能还有maxReconnectAttempts,如果服务器是在达到尝试次数后仍然下降。)

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("failover://(tcp://localhost:61616)?initialReconnectDelay=2000&maxReconnectAttempts=2");