Skip to main content

Compatibility

These are the clients and test suites that we run against the gateway, and their results. MQTT support and AMQP support list the features.

Clients​

ClientProtocolResult
mqtt.js 5.16.0MQTT 3.1.1 and 5.0All scenarios pass
Node-RED 5.0.7MQTT 3.1.1 and 5.0All scenarios pass
paho-python 2.1.0MQTT 3.1.1 and 5.0All scenarios pass
Paho embedded C (commit 6035ea2)MQTT 3.1.1All scenarios that the client can run pass
Eclipse Tahu 1.0.21 (Paho Java 1.2.5)MQTT 3.1.1All scenarios pass
Telegraf 1.40.1MQTT 3.1.1 and 5.0All scenarios that the client can run pass
Ignition 8.3.10 with Cirrus Link MQTT Transmission and Engine 5.0.5Sparkplug B 3.0 on MQTT 3.1.111 of 11 scenarios pass, with failover between two gateways
go-amqp 1.7.0AMQP 1.033 of 33 tests pass
Qpid JMS 2.11.0AMQP 1.012 of 25 tests pass. The others need features that the gateway does not have

The MQTT scenarios cover each QoS, retained messages, wills, persistent sessions, keep-alive, large payloads, wildcards, $ topics and MQTT v5 properties and topic aliases. Across all MQTT clients, 138 of 158 cells pass and none fail. In one cell, Telegraf's MQTT 3.1.1 input pings late, and the gateway allows it. The clients cannot run the other 19. We measured these on 2026-10-30, and Ignition on 2026-10-22.

Test suites​

SuiteResultMeasured
Eclipse Paho MQTT interoperability suite37 of 37 tests (10 MQTT 3.1.1, 27 MQTT 5), over TCP and WebSocket2026-10-30
qpid-interop-test, with six AMQP client librariesAll 1,599 tests that Apache Artemis 2.57 passes2026-10-30
AMQP client suite, with go-amqp and Qpid JMS45 of 58 tests2026-10-30

qpid-interop-test runs Qpid Proton Python and C++, Rhea, Qpid Proton .NET, Qpid ProtonJ2 and Qpid JMS.

Known issues​

  • Qpid JMS. The 13 JMS tests that fail need these features:
    • Local transactions
    • Durable and shared subscriptions, and unsubscribe
    • No-local on a topic
    • A dead-letter queue. A message that keeps failing is delivered again with no limit.
    • Delivery delay. Qpid JMS refuses the send because the gateway does not offer DELAYED_DELIVERY.
    • One connection per client ID. A second connection can use a client ID that is already in use.
    • A selector on a queue that other consumers share. Each selector has its own queue, so other consumers also get what one consumer took.
    • A persistent send to a temporary queue or topic. No binding stores its subject, so the gateway refuses the send.
  • Topic aliases. The default mqtt.topic-alias-max is 0, so a client must not send topic aliases. Set it above 0 to accept them.
  • Ignition. MQTT Engine blocks writes to edge tags by default. Turn off blockDeviceCommands to send DCMD. MQTT Transmission refuses a group ID that contains ..