NanoMQ Documentation
website·Indexed 34 days ago
https://nanomq.io/Documentation for NanoMQ, an MQTT broker featuring a rule engine and multi-protocol gateway support for ZMQ, SOME/IP, and DDS. Includes release notes from v0.3.8 through v0.25.6, configuration guides for nanomq.conf, and details on MQTT STREAM features and NanoNNG.
What's inside NanoMQ
- MQTT STREAM treats MQTT messages published to the same topic as a continuous data stream. This stream can be persisted to disk and queried, providing a solution for maintaining data completeness and reliability, especially in environments with unstable network connectivity.
Overview of NanoMQ MQTT Broker
NanoMQ is an open-source, lightweight, high-performance MQTT messaging broker specifically designed for IoT edge computing scenarios and Multi-access Edge Computing (MEC). It is built in collaboration with NNG, leveraging NNG's network API to optimize MQTT broker performance and SMP (Symmetric Multiprocessing) support on edge devices. It is designed to be ultra-lightweight (booting footprint < 200Kb) and highly portable across any POSIX-based platform.Overview of NanoMQ for Edge Computing
NanoMQ is a next-generation lightweight, high-performance MQTT message server specifically designed for IoT edge computing scenarios. It is developed in pure C/C++ and relies only on native POSIX APIs, ensuring high compatibility and portability across various edge platforms.
Key technical characteristics include:
- Architecture: Based on NNG's asynchronous IO and multi-threaded model, optimized for the MQTT protocol.
- Performance: Supports high throughput and low latency with strong SMP (Symmetric Multiprocessing) support.
- Protocol Support: Fully supports MQTT 3.1.1. Planned future support includes MQTT 5.0 and other message bus protocols like ZMQ and Nanomsg.
- Edge Capabilities: Planned features include an embedded rule engine, edge message caching, and offline retransmission.
Overview of NanoMQ Toolkit utilities
The NanoMQ Toolkit provides a set of command-line tools for managing the NanoMQ broker, testing performance, and transferring files. It consists of three primary components:
- Command Line Interface (CLI): Used to manage the message broker (connections, HTTP services, MQTT, TLS, and logging), operate client tools (Publish, Subscribe, and Connection management), and create/manage routing rules.
- Bench: A performance testing tool built with NanoSDK used to measure MQTT protocol performance, including message publishing, subscribing, and connection establishment to identify system bottlenecks.
- NFTP: A lightweight MQTT-based file transfer tool that supports one-to-one, many-to-one, and one-to-many transfers, as well as asynchronous transmission and breakpoint resumption (resume from where a transfer stopped).
Overview of NanoMQ Multi-Protocol Gateways
NanoMQ provides Multi-Protocol Gateways to bridge MQTT systems with other communication protocols. Supported gateways include:
- ZMQ Gateway: Bridges ZeroMQ (ØMQ, 0MQ, zmq) applications with MQTT systems.
- SOME/IP Gateway: Transforms MQTT messages into SOME/IP messages and vice versa, primarily for automotive Ethernet-based electronics/electrical (E/E) systems.
- DDS Gateway: Bridges MQTT with the Data Distribution Service (DDS) standard, a high-performance, real-time publish-subscribe messaging system (e.g., using Cyclone DDS).
Overview of NanoMQ Rule Engine
NanoMQ includes a built-in rule engine designed for processing data at the edge. It enables developers to implement complex message routing, trigger automated operations, and integrate the MQTT environment with other systems (e.g., integrating with eKuiper for edge stream data analysis).Overview of NanoMQ Data Bridges
Bridging allows the connection of multiple MQTT brokers. Unlike swarms, topic trees and routing tables are not replicated between nodes in bridge mode. Data bridges operate by forwarding messages to a bridge node based on defined rules and subscribing to topics from a bridge node to forward messages back to the local node or group.Overview of MQTT over QUIC Bridging in NanoMQ
NanoMQ supports MQTT over QUIC bridging, allowing it to use the QUIC transport protocol when connecting to a cloud MQTT Broker. This provides several advantages over traditional TCP/TLS: faster connection establishment (0-RTT/1-RTT), elimination of head-of-line blocking via multiplexing, and better stability in high-loss or high-latency networks. It allows edge devices to continue using MQTT/TCP locally while the cloud-edge link benefits from QUIC performance.Overview of NanoMQ configuration formats
NanoMQ supports two configuration file versions: Classical KV and HOCON. Starting from version 0.14, HOCON (Human-Optimized Config Object Notation) is the default format and is a superset of JSON. While Classical KV is still supported for legacy reasons, new features are exclusively supported in the HOCON format.Overview of NanoMQ Data Bridging
Bridging is a strategy to connect multiple MQTT brokers. Unlike clustering, bridging does not replicate topic trees or routing tables. Its primary functions are: forwarding messages to a specified bridge node based on predefined rules, and subscribing to specific topics on a bridge node to distribute messages locally or within a cluster.Overview of QUIC capabilities in NanoMQ
NanoMQ leverages QUIC to enhance MQTT connectivity, particularly in challenging network environments. Key capabilities include using QUIC as the transport layer for MQTT bridges between edge and cloud deployments, improving connection stability and reducing latency in weak, high-latency, or lossy networks, and supporting hybrid bridging to allow seamless switching between QUIC and traditional TCP transports.Overview of NanoMQ Toolkit
The NanoMQ Toolkit provides a suite of command-line tools for managing the broker, testing performance, and transferring files. It includes a Command Line Interface (CLI) for broker, client, and rule operations, theBenchtool for MQTT performance testing, andnftpfor MQTT-based file transfers.