连接时ActiveMQ超时

nuc*_*rei 4 java activemq-classic jms

我有以下问题:我尝试使用以下代码连接到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);
Run Code Online (Sandbox Code Playgroud)

问题是超时没有任何影响

connection.start()
Run Code Online (Sandbox Code Playgroud)

永远被封锁了.我检查了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}
Run Code Online (Sandbox Code Playgroud)

timeout参数在http://activemq.apache.org/cms/configuring.html中指定

有谁知道如何将超时参数传递给ActiveMQConnectionFactory?或者如何为connection.start()设置超时?谢谢!

更新:我在Stackoverflow上发现了这一点:ActiveMQ - 恢复连接后的CreateSession故障转移超时.我试了但是引发了以下异常:

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)
Run Code Online (Sandbox Code Playgroud)

我使用maven repo的ActiveMQ 5.8.0

小智 10

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

如果您正在尝试拥有一个故障转移URL,它看起来就像是因为它正在进入故障转移代码,那么您可能正在寻找initialReconnectDelay(可能还有maxReconnectAttempts,如果服务器仍然关闭后会抛出异常)达到了尝试次数).

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