A flexible, high-performance MQTT broker library for Go, fully implementing MQTT protocol versions 3.x and 5.
Gmqtt is a Go library for building custom MQTT brokers, fully implementing MQTT protocol versions 3.x and 5. It solves the need for a flexible, high-performance messaging server that can be extended with plugins and hooks for authentication, monitoring, and clustering. The library is designed to handle production workloads, supporting thousands of clients with features like session persistence and WebSocket transport.
Go developers building IoT platforms, real-time messaging systems, or custom MQTT brokers requiring extensibility and protocol compliance. It's also suitable for projects needing embedded MQTT servers with clustering or monitoring capabilities.
Developers choose Gmqtt for its comprehensive protocol support, extensible plugin architecture, and proven performance in production. Its hook system allows deep customization of broker behavior, while built-in plugins for metrics and administration reduce development overhead compared to building from scratch.
Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.x and V5 in golang
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Fully implements MQTT V3.x and V5 specifications, ensuring broad client compatibility as stated in the key features.
Offers a hook system for customizing authentication, ACL, and message handling, plus a plugin architecture for adding metrics, admin APIs, and more.
Used in production serving thousands of clients with QoS 1 messaging, demonstrating reliability under real-world loads.
Supports Redis backend to retain session data across restarts, with memory storage recommended for performance.
The project is explicitly less maintained due to personal reasons, posing risks for security updates and long-term viability.
The federation plugin for clustering is labeled as experimental and never used in production, making it unreliable for critical deployments.
Requires compiling from source and detailed YAML configuration, which can be cumbersome compared to pre-packaged brokers.