Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-2981

Connecting to broker using discovery protocol fails

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.4.0, 5.4.1
    • 5.5.0
    • Transport
    • None
    • embedded activemq in tomcat
      spring jms for connection pooling and connections

    Description

      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

      Attachments

        Activity

          People

            dejanb Dejan Bosanac
            justayogi R Pankajakshan
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: