[ https://issues.apache.org/jira/browse/AMQ-5358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
AR updated AMQ-5358: -------------------- Description: Durable subscriptions do not work in 5.10 and 5.11-SNAPSHOT. Test case: Run default broker. . Connect "client1" with clean_session=true. . Subscribe to topic "paho/test" . Disconnect client1 . Connect "client1" with clean_session=false . Subscribe to topic "paho/test" . Disconnect "client1" . Connect "client2" . Publish message "hello world" to topic "paho/test" . Disconnect "client2" . Connect "client1" with clean_session=false . Subscribe to topic "paho/test" . Verify that the message is received. Junit test code attached. was: Durable subscriptions do not work in 5.10 and 5.11-SNAPSHOT. Test case: Run default broker. . Connect "client1" with clean_session=true. . Subscribe to topic "paho/test" . Disconnect client1 . Connect "client1" with clean_session=false . Subscribe to topic "paho/test" . Disconnect "client1" . Connect "client2" . Publish message "hello world" to topic "paho/test" . Disconnect "client2" . Connect "client1" with clean_session=false . Subscribe to topic "paho/test" . Verify that the message is received. Here is the Junit test code: ---------------------------------- package com.mytests.activemqtests; import java.util.Date; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallback; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.junit.Test; import junit.framework.TestCase; public class MqttDurableSubTest extends TestCase implements MqttCallback { final static String BROKER1_URL = "tcp://localhost:1883"; final static int MQTT_QOS_ATMOSTONCE = 0; final static int MQTT_QOS_ATLEASTONCE = 1; final static int MQTT_QOS_EXACTLYONCE = 2; private boolean mMessageReceived = false; private CountDownLatch mLatch; public MqttDurableSubTest(String name) { super(name); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } @Test public void testDuplicateMsg() throws Exception { MqttConnectOptions client1ConnOpt = new MqttConnectOptions(); MqttClient client1 = new MqttClient(BROKER1_URL, "client1"); client1ConnOpt.setCleanSession(true); client1.connect(); System.out.println("Client1 Connected to " + BROKER1_URL); client1.subscribe("paho/test", MQTT_QOS_ATMOSTONCE); Thread.sleep(2000); client1.disconnect(); System.out.println("Client1 completed cleansession=1 subscription."); client1ConnOpt.setCleanSession(false); client1.setCallback(this); client1.connect(client1ConnOpt); System.out.println("Client1 Connected to " + BROKER1_URL); client1.subscribe("paho/test", MQTT_QOS_ATMOSTONCE); Thread.sleep(2000); client1.disconnect(); System.out.println("Client1 completed durable subscription."); MqttConnectOptions client2ConnOpt = new MqttConnectOptions(); client1ConnOpt.setCleanSession(true); MqttClient client2 = new MqttClient(BROKER1_URL, "client2"); client2.setCallback(this); client2.connect(client2ConnOpt); client2.publish("paho/test", "hello world".getBytes(), MQTT_QOS_ATMOSTONCE, false); System.out.println("Client2 published"); client2.disconnect(); client1ConnOpt.setCleanSession(false); client1.setCallback(this); client1.connect(client1ConnOpt); System.out.println("Client1 Connected to " + BROKER1_URL); client1.subscribe("paho/test", MQTT_QOS_ATMOSTONCE); mLatch = new CountDownLatch(1); mLatch.await(10, TimeUnit.SECONDS); assertEquals("Success!", true, mMessageReceived); System.out.println("Done"); } @Override public void connectionLost(Throwable arg0) { // TODO Auto-generated method stub } @Override public void deliveryComplete(IMqttDeliveryToken arg0) { // TODO Auto-generated method stub } @Override public void messageArrived(String topic, MqttMessage message) throws Exception { System.out.println("MQTT - messageArrived "+topic+" , Message: ["+message+"] , ReceviedTime: ["+ new Date() +"] , QoS: ["+message.getQos()+"] , isDup: ["+message.isDuplicate()+"]" ); if (message.toString().equals("hello world")) { mMessageReceived = true; mLatch.countDown(); } } } > MQTT Durable subscription broken in 5.10 and 5.11 > ------------------------------------------------- > > Key: AMQ-5358 > URL: https://issues.apache.org/jira/browse/AMQ-5358 > Project: ActiveMQ > Issue Type: Bug > Components: MQTT > Affects Versions: 5.10.0, 5.11.0 > Environment: Mac OS X, MQTT Paho client library version 0.4.0 > Reporter: AR > Attachments: MqttDurableSubTest.java > > > Durable subscriptions do not work in 5.10 and 5.11-SNAPSHOT. > Test case: > Run default broker. > . Connect "client1" with clean_session=true. > . Subscribe to topic "paho/test" > . Disconnect client1 > . Connect "client1" with clean_session=false > . Subscribe to topic "paho/test" > . Disconnect "client1" > . Connect "client2" > . Publish message "hello world" to topic "paho/test" > . Disconnect "client2" > . Connect "client1" with clean_session=false > . Subscribe to topic "paho/test" > . Verify that the message is received. > Junit test code attached. -- This message was sent by Atlassian JIRA (v6.3.4#6332)