What's New in HiveMQ 3.3?
Written by HiveMQ Team
Category: HiveMQ Release
Published: October 18, 2017
We are pleased to announce the release of HiveMQ 3.3. This version of HiveMQ is the most advanced and user friendly version of HiveMQ ever. A broker is the heart of every MQTT deployment and it’s key to monitor and understand how healthy your system and your connected clients are. Version 3.3 of HiveMQ focuses on observability, usability and advanced administration features and introduces a brand new Web UI. We also benchmarked HiveMQ 3.3. up to 10 million MQTT clients.
This version is a drop-in replacement for HiveMQ 3.2 and of course supports rolling upgrades for zero-downtime.
HiveMQ 3.3 brings many features that your users, administrators and plugin developers are going to love. These are the highlights:
The new HiveMQ version has a built-in Web UI for advanced analysis and administrative tasks. A powerful dashboard shows important data about the health of the broker cluster and an overview of the whole MQTT deployment. With the new Web UI, administrators are able to drill down to specific client information and can perform administrative actions like disconnecting a client. Advanced analytics functionality allows identifying clients with irregular behavior. It’s easy to identify message-dropping clients as HiveMQ shows detailed statistics of such misbehaving MQTT participants. Of course all Web UI features work at scale with more than a million connected MQTT clients. Learn more about the Web UI in the documentation.
Time To Live
HiveMQ introduces Time to Live (TTL) on various levels of the MQTT lifecycle. Automatic cleanup of expired messages is as well supported as the wiping of abandoned persistent MQTT sessions. In particular, version 3.3 implements the following TTL features:
- MQTT client session expiration
- Retained Message expiration
- MQTT PUBLISH message expiration
Configuring a TTL for MQTT client sessions and retained messages allows freeing system resources without manual administrative intervention as soon as the data is not needed anymore. Beside global configuration, MQTT PUBLISHES can have individual TTLs based on application specific characteristics. It’s a breeze to change the TTL of particular messages with the HiveMQ plugin system. As soon as a message TTL expires, the broker won’t send out the message anymore, even if the message was previously queued or in-flight. This can save precious bandwidth for mobile connections as unnecessary traffic is avoided for expired messages.
Debugging specific MQTT clients or groups of MQTT clients can be challenging at scale. HiveMQ 3.3 introduces an innovative Trace Recording mechanism that allows creating detailed recordings of all client interactions with given filters. It’s possible to filter based on client identifiers, MQTT message types and topics. And the best of all: You can use regular expressions to select multiple MQTT clients at once as well as topics with complex structures. Getting detailed information about the behavior of specific MQTT clients for debugging complex issues was never easier.
The new native SSL integration of HiveMQ brings a __ performance boost of more than 40%__ for SSL Handshakes (in terms of CPU usage) by utilizing an integration with BoringSSL. BoringSSL is Google’s fork of OpenSSL which is also used in Google Chrome and Android. Besides the compute and huge memory optimizations (saves up to 60% Java Heap), additional secure state-of-the-art cipher suites are supported by HiveMQ which are not directly available for Java (like ChaCha20-Poly1305). Most HiveMQ deployments on Linux systems are expected to see decreased CPU load on TLS handshakes with the native SSL integration and huge memory improvements.
New Plugin System Features
The popular and powerful plugin system has received additional services and callbacks which are useful for many existing and future plugins. Plugin developers can now use a ConnectionAttributeStore and a SessionAttributeStore for storing arbitrary data for the lifetime of a single MQTT connection of a client or for the whole session of a client. The new ClientGroupService allows grouping different MQTT client identifiers by the same key, so it’s easy to address multiple MQTT clients (with the same group) at once.
A new callback was introduced which notifies a plugin when a HiveMQ instance is ready, which means the instance is part of the cluster and all listeners were started successfully. Developers can __now react when a MQTT client session is ready and usable in the cluster __ with a dedicated callback.
Some use cases require modifying a MQTT PUBLISH packet before it’s sent out to a client. This is now possible with a new callback that was introduced for modifying a PUBLISH before sending it out to a individual client. The offline queue size for persistent clients is now also configurable for individual clients as well as the queue discard strategy.
HiveMQ 3.3 has many additional features designed for power users and professional MQTT deployments. The new version also has the following highlights:
- OCSP Stapling
- Event Log for MQTT client connects, disconnects and unusual events (e.g. discarded message due to slow consumption on the client side
- Throttling of concurrent TLS handshakes
- Connect Packet overload protection
- Configuration of Socket send and receive buffer sizes
- Global System Information like the HiveMQ Home folder can now be set via Environment Variables without changing the run script
- The internal HTTP server of HiveMQ is now exposed to the holistic monitoring subsystem
- Many additional useful metrics were exposed to HiveMQ’s monitoring subsystem