You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Jose María Zaragoza <de...@gmail.com> on 2013/11/20 11:17:23 UTC

maxReconnectAttempts in failover transport

Hello:

I'm using AMQ 5.8.0

I've defined the next transport failover

"failover:(tcp://broker1:61616?connectionTimeout=3000,tcp://broker2:61616?connectionTimeout=3000)?timeout=5000&amp;startupMaxReconnectAttempts=1&amp;maxReconnectAttempts=1&amp;randomize=false&amp;priorityBackup=false"


I start a Consumer, connects to broker1, and it listens correctly

If I stop the AMQ server named broker1, an exception is thrown in
ActiveMQMessageConsumer.dequeue, caused by doReconnect
Why doesn't doReconnect() method retries to connect to broker2 ? What
is maxReconnectAttempts value for ?
Is it not monitorized the connection and is balanced transparently ?

Thanks and regards


javax.jms.JMSException: java.net.UnknownHostException
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
at org.apache.activemq.ActiveMQMessageConsumer.dequeue(ActiveMQMessageConsumer.java:476)
at org.apache.activemq.ActiveMQMessageConsumer.receive(ActiveMQMessageConsumer.java:594)
at org.apache.activemq.pool.PooledMessageConsumer.receive(PooledMessageConsumer.java:67)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.UnknownHostException
at sun.nio.ch.Net.translateException(Net.java:82)
at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:122)
at org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:496)
at org.apache.activemq.transport.nio.NIOTransport.doStart(NIOTransport.java:156)
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)
at org.apache.activemq.transport.AbstractInactivityMonitor.start(AbstractInactivityMonitor.java:140)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:72)
at org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:993)
at org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:143)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

Re: maxReconnectAttempts in failover transport

Posted by Jose María Zaragoza <de...@gmail.com>.
I could find out that this error is caused by updateClusterClients="true"

 <transportConnector name="openwire"
uri="nio://0.0.0.0:61616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"
updateClusterClients="true"/>


So, I need to se it to false

Thanks



2013/11/20 Jose María Zaragoza <de...@gmail.com>:
> Hello:
>
> I'm using AMQ 5.8.0
>
> I've defined the next transport failover
>
> "failover:(tcp://broker1:61616?connectionTimeout=3000,tcp://broker2:61616?connectionTimeout=3000)?timeout=5000&amp;startupMaxReconnectAttempts=1&amp;maxReconnectAttempts=1&amp;randomize=false&amp;priorityBackup=false"
>
>
> I start a Consumer, connects to broker1, and it listens correctly
>
> If I stop the AMQ server named broker1, an exception is thrown in
> ActiveMQMessageConsumer.dequeue, caused by doReconnect
> Why doesn't doReconnect() method retries to connect to broker2 ? What
> is maxReconnectAttempts value for ?
> Is it not monitorized the connection and is balanced transparently ?
>
> Thanks and regards
>
>
> javax.jms.JMSException: java.net.UnknownHostException
> at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
> at org.apache.activemq.ActiveMQMessageConsumer.dequeue(ActiveMQMessageConsumer.java:476)
> at org.apache.activemq.ActiveMQMessageConsumer.receive(ActiveMQMessageConsumer.java:594)
> at org.apache.activemq.pool.PooledMessageConsumer.receive(PooledMessageConsumer.java:67)
> at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
> at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
> at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
> at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
> at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
> at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: java.net.UnknownHostException
> at sun.nio.ch.Net.translateException(Net.java:82)
> at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:122)
> at org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:496)
> at org.apache.activemq.transport.nio.NIOTransport.doStart(NIOTransport.java:156)
> at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)
> at org.apache.activemq.transport.AbstractInactivityMonitor.start(AbstractInactivityMonitor.java:140)
> at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
> at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:72)
> at org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:993)
> at org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:143)
> at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
> at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

Re: maxReconnectAttempts in failover transport

Posted by Jose María Zaragoza <de...@gmail.com>.
Thanks Tim

2013/11/20 Timothy Creswick <Ti...@vorboss.com>:
>however the client isn't able to resolve the name that it receives.

That makes sense for for me , but client's machine has got these
entries in its hosts file
It's weird. Maybe I'm not doing the right tests

So far, I'm going to disable that feature

Regards

> Regards,
>
> Tim

RE: maxReconnectAttempts in failover transport

Posted by Timothy Creswick <Ti...@vorboss.com>.
> javax.jms.JMSException: java.net.UnknownHostException

See my earlier posts on this subject, but the problem is that your broker is sending connection details for the other brokers to your client, however the client isn't able to resolve the name that it receives.

For example, if you have two brokers which are connected in a network of brokers like this:

Broker1 <--> Broker2

...and you connect a client to Broker1, Broker1 will announce to the client the connection details for Broker2. The default mechanism (and this is crazy), is an *unqualified* hostname. If your client isn't able to resolve the Broker2 hostname, you'll get the above error.

Hope that makes sense.

Regards,

Tim