nucandrei
nucandrei

Reputation: 951

ActiveMQ timeout at connection

I have the following problem: I try to connect to an ActiveMQ broker (which is now down) using the following piece of code

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);

The problem is that the timeout does not have any effect

connection.start()

is blocked forever. I inspected ActiveMQ log and found the following info:

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}

The timeout parameter is specified here http://activemq.apache.org/cms/configuring.html

Has anybody any idea how to pass timeout argument to ActiveMQConnectionFactory? Or how to set a timeout for connection.start() ? Thank you!

Update: I found this on Stackoverflow: ActiveMQ - CreateSession failover timeout after a connection is resumed . I tried it but the following exception is thrown:

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)

I use ActiveMQ 5.8.0 from maven repo

Upvotes: 7

Views: 25805

Answers (1)

Andrew
Andrew

Reputation: 146

It appears that your url is invalid still in both cases when attempting to set the timeout property.

If you're trying to have a failover URL, which it looks like you are since it is getting in to the Failover code then you're probably looking for initialReconnectDelay (and possibly maxReconnectAttempts which would throw an exception if the server is still down after the number of attempts is reached).

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

Upvotes: 13

Related Questions