What is HiveMQ MQTT Client?
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.
HiveMQ MQTT Client is an Open Source project backed by HiveMQ and BMW CarIT.
Features
- All MQTT 3.1.1 and MQTT 5.0 features
- API flavors:
- Reactive: Reactive Streams compatible, RxJava and Reactor APIs are available
- Asynchronous API: futures and callbacks
- Blocking API: for quick start and testing
- Switch flexibly between flavours and use them concurrently
- Flavours are clearly separated but have a consistent API style
- Backpressure support:
- QoS 1 and 2
- QoS 0 (dropping incoming messages, if necessary)
- Bringing MQTT flow control and reactive pull backpressure together
- Transports:
- TCP
- SSL/TLS
- All TLS versions up to TLS 1.3 are supported
- TLS mutual authentication
- TLS Server Name Indication (SNI)
- TLS Session Resumption
- Default and customizable hostname verification
- WebSocket, Secure WebSocket
- Proxy: SOCKS4, SOCKS5, HTTP CONNECT
- All possible combinations
- Automatic and configurable thread management
- Automatic and configurable reconnect handling and message redelivery
- Automatic and configurable resubscribe if the session expired
- Manual message acknowledgment
- Selectively enable manual acknowledgment for specific streams
- Acknowledge messages that are emitted to multiple streams independently per stream (the client aggregates the acknowledgments before sending MQTT acknowledgments)
- Order of manual acknowledgment does not matter (the client automatically ensures the order of MQTT acknowledgments for 100% compatibility with the MQTT specification)
- Lifecycle listeners
- When connected
- When disconnected or connection failed
- MQTT 5 specific:
- Pluggable Enhanced Authentication support (additional to MQTT specification: server-triggered re-authentication)
- Automatic Topic Alias mapping
- Interceptors for QoS flows
Users
If you use the HiveMQ MQTT Client in a project that is not listed here, feel free to open an issue or pull request.