activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jaiganesh Mathaiyan (JIRA)" <j...@apache.org>
Subject [jira] Created: (AMQ-2134) Multicast transport does not work when for a consumer or producer
Date Fri, 20 Feb 2009 22:26:59 GMT
Multicast transport does not work when for a consumer or producer
-----------------------------------------------------------------

                 Key: AMQ-2134
                 URL: https://issues.apache.org/activemq/browse/AMQ-2134
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.2.0
         Environment: Using JMS in a spring framework
            Reporter: Jaiganesh Mathaiyan
            Priority: Critical
             Fix For: 5.3.0


I am creating a broker with just a multicast transport connector. Code snippet below.

            try{
			broker = new BrokerService();
		// configure the broker
			broker.setBrokerName("ism");		
			broker.addConnector("multicast://224.1.2.3:6255?loopBackMode=true");			
			broker.start();
		}catch(Exception ex){
			ex.printStackTrace();
		}

Now I try creating a subscriber on the broker  using the following broker url "multicast://224.1.2.3:6255?loopBackMode=true&amp;trace=true"
The connection never succeeds and the following message is repeatedly thrown.

DEBUG o.a.a.t.reliable.ReliableTransport - Still waiting for response on: multicast://224.1.2.3:6255?loopBackMode=true&trace=true@0
to command: ConnectionInfo {commandId = 1, responseRequired = true, connectionId = ID:JMATHAIY-WXP01-3697-1235159811727-2:0,
clientId = ID:JMATHAIY-WXP01-3697-1235159811727-3:0, userName = null, password = null, brokerPath
= null, brokerMasterConnector = false, manageable = true, clientMaster = true} sending replay
message
11:58:44.270 [http-8080-1] DEBUG o.a.a.t.TransportLogger.Connection:1 - SENDING: ReplayCommand
{commandId = 25, firstNakNumber = 1, lastNakNumber = 1}


The reason to believe why this is a bug: 
I did some sniffing on the network and found that the igmp multicast join request for the
broker never came through. Some digging into the code revealed that the MulticastTransport
was never created in the first place. UdpTransport was being created even though the transport
was multicast. The following change in the doBind method on the UdpTransportFactory.java fixed
this problem.

            //int port = location.getPort();
            //OpenWireFormat openWireFormat = asOpenWireFormat(wf);
            //UdpTransport transport = new UdpTransport(openWireFormat, port);
            log.debug("Putting a custom fix for Multicast problem");
            UdpTransport transport = (UdpTransport)createTransport(location, wf);

Now I was able to see the broker joining the multicast group, but the multicast socket gets
timed out after every 5000 ms . I figured out that this is a default setting in the MulticastTransport.java
(DEFAULT_IDLE_TIME) and tried changing it to 0 (open socket forever). Note : There is no way
to specify this value from the uri. (or I was not able to figure that out).

After the above two changes, I could get publisher and consumer connect to the broker and
pass on the messages.

Please review the above changes and let me know if this has any other side effects or if any
better fix is possible.

Background : We are actively testing out the various transports to use ActiveMQ in our application
and multicast is very essential. Infact we want to integrate jgroups and I am not having any
success there. Is jgroups really integrated in 5.2 ?






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


Mime
View raw message