activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sfali16 <sfaraz....@gmail.com>
Subject AMQ-3353 Durable subscribers on durable topics don't receive messages after network disconnect
Date Wed, 08 Jun 2011 15:19:00 GMT
         Issue Type: Bug 
          Components: Broker 
    Affects Versions: 5.5.0, 5.3.1 
         Environment: Windows & Linux 
JDK 1.6 
            Reporter: Syed Faraz Ali 


I've set up a durable topic with the default (persistent) delivery mode on
one machine that is publishing a simple text message every 5 seconds. I
created a durable subscriber that consumes messages published to the above
topic on another machine. I am using broker to broker communication between
the two machines. 
I start up the two programs on either machine and see the messages coming
through to the subscriber. If I then pull the network cable to disconnect
the network between the two machines, wait for a minute and then plug it
back in, my subscriber doesn't receive the messages any more. I can see from
the output that the publisher is still publishing them (Temporary topics,
non-durable queues all continue to sync up in our production environment, it
is only the durable topics that don't work after network reconnect) 

If I were to tweak a setting on the publisher's broker (that was introduced
only in 5.5.0), suppressDuplicateTopicSubscriptions=false, then the topics
work correctly after network reconnect. But this may have other unintended
consequences and I was hoping to get a better idea of: 
- is this a known issue ? if so, then are there any specific challenges that
have caused it not to be fixed? 
- are other people out there using durable topics and subscribers without a
failover option that have run into this problem? What have they done to work
around? 

Here is how my subscriber and publisher are set up: 
Topic Publisher (Machine 1) 
        publisherConnection = connFactory.createConnection(); 
        publisherConnection.setClientID( "ProducerCliID" ); 
        publisherConnection.start(); 

        session = publisherConnection.createSession( true, -1 ); 
        Destination producerTopic = session.createTopic( TEST_TOPIC_NAME ); 
        producer = session.createProducer( (Topic)producerTopic ); 
.... 
.... 
.... 
    // On a timer, keep sending this out every 5 seconds 
                 String text = "HELLO " + count++; 
                TextMessage msg = session.createTextMessage( text ); 
                System.out.println( "Sending TextMessage = " + msg.getText()
); 
                producer.send( msg ); 
                session.commit(); 

Subscriber ( Machine 2): 
        Connection clientConnection = connFactory.createConnection(); 
        clientConnection.setClientID("cliID"); 
        clientConnection.start(); 
        Session session = clientConnection.createSession( false,
Session.AUTO_ACKNOWLEDGE ); 

        Destination topic = session.createTopic( topicName ); 
        MessageConsumer subscriber = session.createDurableSubscriber(
(Topic)topic, "subName" ); 

        TestMessageListener msgListener = new TestMessageListener( 1000 ); 
        subscriber.setMessageListener( msgListener ); 
..... 
..... 
         // TestMessageListener's onMessage method simply outputs the
message: 
        public void onMessage(Message message) 
        { 
            if ( message instanceof TextMessage ) 
            { 
                System.out.println( "Message received = " +
((TextMessage)message) ); 
            } 
        } 

I can provide the jars for you to run the program if need be. 

I created this as a JIRA issue first, but I realize that I may have posted
to the wrong forum (as it posted to the Dev forum). My apologies if this was
not the right procedure for seeking out help.
https://issues.apache.org/jira/browse/AMQ-3353




--
View this message in context: http://activemq.2283324.n4.nabble.com/AMQ-3353-Durable-subscribers-on-durable-topics-don-t-receive-messages-after-network-disconnect-tp3582806p3582806.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
View raw message