Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-6343

[MQTT] LWT doesn't work over a websocket connection

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.13.3
    • 5.13.4, 5.14.0
    • None
    • None
    • GNU/Linux Debian 8.3

    Description

      I use several services, some of them connect over tcp and the LWT works properly.
      I use several clients from a webapp' connected over a websocket link.

      i use a javascript code:

      var i_am_disconnected = new Paho.MQTT.Message(JSON.stringify({
              version: 1,
              state: 0
            }));
            i_am_disconnected.destinationName = "device/" + _token + "/ping";
            i_am_disconnected.retained = true;
            i_am_disconnected.qos = 1;
      client.onConnectionLost = onConnectionLost;
            client.connect(…
      

      i traced the ActiveMQ log, i can see that the disconnection is detected, but i didn't receive my LWT message. (again, my LWT works when I use a tcp connexion)

      2016-07-01 00:07:51,329 | INFO  | addConnection() clientId: 60badfb1-3e6d-4637-b4ec-16b557d7db64 userName: bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64 info: ConnectionInfo {commandId = 0, responseRequired = true, connectionId = ID:deverylight-all-snapshot-42229-1467323807294-3:27, clientId = 60badfb1-3e6d-4637-b4ec-16b557d7db64, clientIp = ws://192.168.0.2:42372, userName = bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64, password = *****, brokerPath = null, brokerMasterConnector = false, manageable = false, clientMaster = true, faultTolerant = false, failoverReconnect = false} | com.deveryware.deverylight.activemq.TokenAuthenticationBroker | qtp1143988572-40
      2016-07-01 00:07:51,333 | INFO  | addProducer() clientId: 60badfb1-3e6d-4637-b4ec-16b557d7db64 userName: bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64 info: ProducerInfo {commandId = 2, responseRequired = true, producerId = ID:deverylight-all-snapshot-42229-1467323807294-3:27:-1:1, destination = null, brokerPath = null, dispatchAsync = false, windowSize = 0, sentCount = 0} | com.deveryware.deverylight.activemq.TokenAuthenticationBroker | qtp1143988572-40
      2016-07-01 00:07:51,423 | INFO  | send() clientId: 60badfb1-3e6d-4637-b4ec-16b557d7db64 userName: bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64 send: ActiveMQBytesMessage {commandId = 3, responseRequired = true, messageId = ID:deverylight-all-snapshot-42229-1467323807294-3:27:-1:1:1, originalDestination = null, originalTransactionId = null, producerId = ID:deverylight-all-snapshot-42229-1467323807294-3:27:-1:1, destination = topic://device.bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64.ping, transactionId = null, expiration = 0, timestamp = 1467324471422, arrival = 0, brokerInTime = 0, brokerOutTime = 0, correlationId = null, replyTo = null, persistent = false, type = null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = org.apache.activemq.util.ByteSequence@335bf90b, marshalledProperties = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = {ActiveMQ.MQTT.QoS=1, ActiveMQ.Retain=true}, readOnlyProperties = true, readOnlyBody = true, droppable = false, jmsXGroupFirstForConsumer = false} ActiveMQBytesMessage{ bytesOut = null, dataOut = null, dataIn = null } payload: {"version":1,"state":2,"timestamp":1467324470.015} | com.deveryware.deverylight.activemq.TokenAuthenticationBroker | qtp1143988572-41
      2016-07-01 00:07:51,447 | INFO  | addConsumer() clientId: 60badfb1-3e6d-4637-b4ec-16b557d7db64 userName: bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64 info: ConsumerInfo {commandId = 4, responseRequired = true, consumerId = ID:deverylight-all-snapshot-42229-1467323807294-3:27:-1:1, destination = topic://mobile.167e0de6e20b55cc318aacb74f31752e2bffd339.*.position, prefetchSize = 32767, maximumPendingMessageLimit = 0, browser = false, dispatchAsync = true, selector = null, clientId = null, subscriptionName = null, noLocal = false, exclusive = false, retroactive = true, priority = 0, brokerPath = null, optimizedAcknowledge = false, noRangeAcks = false, additionalPredicate = null} | com.deveryware.deverylight.activemq.TokenAuthenticationBroker | qtp1143988572-39
      2016-07-01 00:07:51,451 | INFO  | addConsumer() clientId: 60badfb1-3e6d-4637-b4ec-16b557d7db64 userName: bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64 info: ConsumerInfo {commandId = 5, responseRequired = true, consumerId = ID:deverylight-all-snapshot-42229-1467323807294-3:27:-1:2, destination = topic://mobile.167e0de6e20b55cc318aacb74f31752e2bffd339.*.event, prefetchSize = 32767, maximumPendingMessageLimit = 0, browser = false, dispatchAsync = true, selector = null, clientId = null, subscriptionName = null, noLocal = false, exclusive = false, retroactive = true, priority = 0, brokerPath = null, optimizedAcknowledge = false, noRangeAcks = false, additionalPredicate = null} | com.deveryware.deverylight.activemq.TokenAuthenticationBroker | qtp1143988572-39
      2016-07-01 00:08:51,151 | INFO  | removeConnection() clientId: 60badfb1-3e6d-4637-b4ec-16b557d7db64 userName: bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64 info: ConnectionInfo {commandId = 0, responseRequired = true, connectionId = ID:deverylight-all-snapshot-42229-1467323807294-3:27, clientId = 60badfb1-3e6d-4637-b4ec-16b557d7db64, clientIp = ws://192.168.0.2:42372, userName = bd525936-5238-4410-9579-79f8dfb27ea4::60badfb1-3e6d-4637-b4ec-16b557d7db64, password = *****, brokerPath = null, brokerMasterConnector = false, manageable = false, clientMaster = true, faultTolerant = false, failoverReconnect = false} | com.deveryware.deverylight.activemq.TokenAuthenticationBroker | qtp1143988572-40
      

      this is my ActiveMQ configuration

      <transportConnectors>
                  <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883"/>
                  <transportConnector name="mqtt+ws" uri="ws://0.0.0.0:9000"/>
              </transportConnectors>
      

      Attachments

        Activity

          People

            cshannon Christopher L. Shannon
            sylvain Sylvain Wallez
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: