Skip to main content

MQTT versions

xcon-mq accepts MQTT 3.1 (MQIsdp), 3.1.1 and 5.0 on the same listeners; a 5.0 client negotiates the richer feature set at CONNECT.

MQTT 5 support

FeatureStatus
No LocalImplemented (a client isn't sent its own publishes)
Retain As PublishedLive delivery only; not preserved through WAL recovery
Retain Handling (0/1/2)Implemented
Message expiryRetained-store + reconnect replay; not on live delivery; wills drop it
Session expiryImplemented, including persisted offline deadlines
Topic aliasInbound, up to 100 per connection
Shared subscriptionsImplemented (round-robin, connected members preferred)
Receive MaximumParsed but not enforced
User PropertiesForwarded on live delivery; not persisted through the WAL
Reason codesPartial (see below)

Reason codes

The broker emits reason codes on selected failures — an ACL-denied QoS 1/2 publish returns 0x87, a denied subscription returns 0x80, and some semantic errors (bad topic alias, invalid subscription options) close with 0x82. But QoS 0 denials get no reason-bearing response, and many malformed or unexpected packets simply close the connection without a DISCONNECT packet.

Cross-version delivery works: a message from a 3.1.1 client reaches 5.0 subscribers and vice versa.