A high-performance, feature-rich Java client library for MQTT 5.0 and 3.1.1 with multiple API flavors and backpressure support.
HiveMQ MQTT Client is a Java library that enables applications to communicate using the MQTT protocol, versions 3.1.1 and 5.0. It solves the problem of building reliable, high-performance messaging clients for IoT, telemetry, and real-time data systems by providing a feature-rich, standards-compliant implementation.
Java developers building IoT applications, messaging systems, or any software that needs to publish/subscribe to an MQTT broker, especially those requiring advanced features like backpressure, multiple transport options, or reactive programming models.
Developers choose it for its comprehensive protocol support, high performance, and the flexibility of its multiple API styles (Reactive, Async, Blocking), which allows integration into diverse architectures and programming paradigms without sacrificing robustness or specification compliance.
HiveMQ MQTT Client is an MQTT 5.0 and MQTT 3.1.1 compatible and feature-rich high-performance Java client library with different API flavours and backpressure support
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements all features of MQTT 3.1.1 and 5.0, including MQTT 5-specific capabilities like enhanced authentication and topic aliases, ensuring standards compliance.
Offers Reactive, Asynchronous, and Blocking APIs, allowing seamless switching between programming styles as demonstrated in the extensive code examples.
Supports flow control for all QoS levels, integrating MQTT flow control with reactive pull backpressure to handle high-volume message streams effectively.
Supports TCP, SSL/TLS up to 1.3, WebSockets, and proxies, enabling flexible deployment in diverse network environments with secure connections.
Features like WebSocket or proxy support require additional modules, complicating build configuration and increasing dependency management effort.
The Reactive API necessitates knowledge of RxJava or Reactor, creating a steeper learning curve for developers not familiar with reactive programming patterns.
The README mentions a shaded version to avoid transitive dependency issues, indicating that integration can be challenging in projects with complex dependency graphs.