Connecting to broker using discovery protocol fails
---------------------------------------------------

                 Key: AMQ-2981
                 URL: https://issues.apache.org/activemq/browse/AMQ-2981
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.4.1, 5.4.0
         Environment: embedded activemq in tomcat
spring jms for connection pooling and connections
            Reporter: R Pankajakshan


steps to reproduce

1. have a broker running on a port say '12345' and group say 'test' using 
activemq-core version 5.4.0 or 5.4.1
2.  use url 
discovery:(multicast://default?group=test)?reconnectDelay=1000&maxReconnectAttempts=30&useExponentialBackOff=false
 
to connect to the broker
3. the following exception occurs



Caused by: javax.jms.JMSException: Invalid connect parameters: 
{reconnectDelay=1000, maxReconnectAttempts=30, useExponentialBackOff=false}
        at 
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
        at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1298)
        at 
org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1382)
        at 
org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:309)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at 
org.springframework.jms.connection.SingleConnectionFactory$SharedConnectionInvocationHandler.invoke(SingleConnectionFactory.java:550)
        at $Proxy34.createSession(Unknown Source)
        at 
org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196)
        at 
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:457)
        ... 38 more
Caused by: java.io.IOException: Invalid connect parameters: 
{reconnectDelay=1000, maxReconnectAttempts=30, useExponentialBackOff=false}
        at 
org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:45)
        at 
org.apache.activemq.transport.failover.FailoverTransport.oneway(FailoverTransport.java:594)
        at 
org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
        at 
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
        at 
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
        at 
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
        at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1276)
        ... 48 more
Caused by: java.lang.IllegalArgumentException: Invalid connect parameters: 
{reconnectDelay=1000, maxReconnectAttempts=30, useExponentialBackOff=false}
        at 
org.apache.activemq.transport.TransportFactory.doCompositeConnect(TransportFactory.java:159)
        at 
org.apache.activemq.transport.TransportFactory.compositeConnect(TransportFactory.java:93)
        at 
org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:844)
        at 
org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:135)
        at 
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
        at 
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)


4. downgrading to amq 5.3.2 solves the problem

NOTE: a new functionality has been added to 5.4.0 

ref : http://activemq.apache.org/discovery-transport-reference.html

Applying parameters to discovered transports
>From 5.4, transport parameters in the URI will also be applied to discovered 
>transports. Therefore, transport parameters may also include parameters for 
>the discovered transport. For example, adding the connectionTimeout parameter 
>to the URI will apply the parameter to every discovered TCP transport, even 
>though this parameter is not a Discovery transport option.


I think the above change has caused the problem








-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to