Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-8332

Publishing message with existing topic alias and different topic causes message to be sent to incorrect topic

    XMLWordPrintable

Details

    Description

      Description

      When sending MQTT 5.0 publish message with topic alias number that has existing mapping for given connection and new topic, Artemis broker will incorrectly route message to topic from alias mapping instead of topic from publish message. This is incorrect behavior because broker should route message to topic from publish message and update alias mapping with new topic. 

      Section 3.3.2.3.4 Topic Alias in MQTT 5.0 specification states the following:

      A sender can modify the Topic Alias mapping by sending another PUBLISH in the same Network Connection with the same Topic Alias value and a different non-zero length Topic Name. 

       

      Steps to reproduce

      1. Create 2 MQTT subscribers: first on topic1 and second on topic2
      2. Create 1 MQTT publisher
      3. From publisher send publish message on topic1 with MQTT property TOPIC_ALIAS  set to 1
      4. From publisher send publish message on topic2 with MQTT property TOPIC_ALIAS  set to 1

      Current result

      First message is correctly routed to topic1, but second message is incorrectly routed to topic1 instead of topic2
      Method org.apache.activemq.artemis.core.protocol.mqtt.MQTTPublishManager#sendToQueue adds mapping only if alias does not exist

      Expected result 

      Topic field in MQTT publish should have priority over TOPIC_ALIAS property. Topic alias stored under existing alias number should be updated.

      Attachments

        Activity

          People

            rhn-support-jbertram Justin Bertram
            rh-messaging-ci Messaging CI
            Samuel Gajdos Samuel Gajdos
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: