Dhiraj Bokde created AMQ-5092:
---------------------------------

             Summary: MQTT uses duplicate packet IDs for PUBLISH messages
                 Key: AMQ-5092
                 URL: https://issues.apache.org/jira/browse/AMQ-5092
             Project: ActiveMQ
          Issue Type: Bug
          Components: MQTT
    Affects Versions: 5.9.0
            Reporter: Dhiraj Bokde
             Fix For: 5.10.0


MQTT protocol converters does not correctly generate unique packet ids for 
retained and non-retained publish messages sent to clients. MQTT requires that 
all Publish messages with QoS > 0 must have a unique packet id which can be 
used by clients to coordinate the PUBACK, PUBREC, PUBREL and PUBCOMP messages 
depending upon the QoS flow. 

Although retained messages published on creation of client subscriptions are 
copies of retained messages, they must carry a unique packet id when dispatched 
to clients. ActiveMQ re-uses the retained message's packet id, which makes it 
difficult to acknowledge these messages when wildcard topics are used. 

ActiveMQ also sends the same non-retained message multiple times for every 
matching subscription for overlapping subscriptions. These messages also re-use 
the publisher's message id as the packet id, which breaks client 
acknowledgment. 

A patch is included, which fixes all the above scenarios. It generates a unique 
packet id for every publish (retained and non-retained), and also ensures that 
redelivery on the same connection will re-use message ids, with the dup flag 
set. The patch also maps JMS redelivery status for a subscription to the MQTT 
Dup flag to indicate duplicate messages. Unit tests are included to test 
correct packet id generation. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to