MQTT Conformance

async_mqtt supports all functionalities of MQTT v3.1.1 and v5.0. Users can send and receive all types of MQTT packets. Some functionalities require stateful endpoint management, which async_mqtt handles efficiently.

Asio Friendly

async_mqtt supports Asio-style completion tokens, including default completion tokens. Users can bind executors, cancellation slots, and allocators. async_mqtt can work with coroutines, including Asio-style multiple completion waiting.

High Performance

async_mqtt supports high-performance communication. Balancing latency and throughput can sometimes be a trade-off, and async_mqtt allows configuration per endpoint and client basis. async_mqtt is used for not only mqtt clients but also high performance brokers. See the performance page for details.

Support for Various Underlying Layers

async_mqtt supports not only TCP, TLS, and WebSocket but also user-defined underlying layers, including test stubs.

Support for Both Detailed Low-Level Operations and Convenient High-Level Operations

async_mqtt supports detailed operations, such as sending any MQTT packet at any time, through the endpoint component. This flexibility facilitates diverse application development. For typical use cases, high-level APIs are more convenient, provided by the client component. The client is built on top of the endpoint.

Support for Broker Cluster Development

async_mqtt can be used for broker development. For developing a broker cluster, inter-broker communication is crucial. async_mqtt supports expanded length packet identifiers for this purpose.