[ https://issues.apache.org/jira/browse/AMQ-3353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13586449#comment-13586449 ]
Noel Ady edited comment on AMQ-3353 at 2/26/13 12:08 AM: --------------------------------------------------------- Thanks Gary. I can confirm my results are as Andreas Calvo previously stated. The situation occurs when you pull the network plug (or do a reboot on the hosting operating system). The problem does not occur when you stop and restart the activemq broker.Although as Andreas, I have not tried this against 5.8.0. I noticed there is a fix in 5.8.0 regarding durable subs, but specifically to offline deletions. I intend to run tests against this version before re-opening this bug. was (Author: noelady): Thanks Gary. I can confirm my results are as Andreas Calvo previously stated. The situation occurs when you pull the network plug (or do a reboot on the hosting operating system). The problem does not occur when you stop and restart the activemq broker. > Durable subscribers on durable topics don't receive messages after network > disconnect > ------------------------------------------------------------------------------------- > > Key: AMQ-3353 > URL: https://issues.apache.org/jira/browse/AMQ-3353 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.3.1, 5.5.0 > Environment: Windows & Linux > JDK 1.6 > Reporter: Syed Faraz Ali > Assignee: Gary Tully > Fix For: 5.6.0 > > Attachments: DurableSubscriberWithNetworkDisconnectTest.java, > DurableSubscriberWithNetworkDisconnectTest.java, > DurableSubscriberWithNetworkDisconnectTest.java, embedded1.xml, > embedded2.xml, example.tar.gz, instructions.txt, standalone1.xml, > standalone2.xml, > TEST-org.apache.activemq.usecases.DurableSubscriberWithNetworkDisconnectTest.xml, > > TEST-org.apache.activemq.usecases.DurableSubscriberWithNetworkDisconnectTest.xml, > test-results.ods > > > 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. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira