A Go implementation of MQTT clients, servers, and benchmarking tools for IoT and messaging systems.
mqtt is a Go library that implements MQTT clients, servers, and benchmarking tools for IoT and messaging applications. It provides the building blocks for MQTT communication in Go, including example servers with TLS support and specialized tools for load testing and performance measurement.
Go developers building IoT systems, messaging applications, or MQTT brokers who need native Go implementations and performance testing capabilities.
Developers choose this library for its pure Go implementation, included benchmarking tools, and practical approach to MQTT communication with example servers that demonstrate real-world usage patterns.
MQTT Clients and Servers in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Go's concurrency and networking for efficient MQTT handling, making it a natural fit for Go-based IoT and messaging projects.
Includes three specialized tools (pingtest, loadtest, many) for testing latency, load capacity, and high concurrency, with the many tool demonstrating 40k concurrent connections.
Provides ready-to-use server implementations, including a TLS-secured version in smqttsrv, simplifying setup for encrypted communication.
Emphasizes real-world benchmarking and usability, with tools designed to measure system performance under various loads, as highlighted in the philosophy.
Only supports QoS level 0 and lacks features like last will messages and keepalive, limiting its use for reliable, production-grade messaging.
Retained messages are stored in RAM and lost on server restart, which can be a critical issue for applications requiring data durability.
The author admits 'all benchmarks suck,' and tools require manual tuning with -help flags, making them less polished for quick or standardized testing.