LavinMQ 2.11 is here
LavinMQ 2.11 is here with a set of meaningful improvements across reliability, performance, and usability.
The headline feature is automatic retries with backoff. Queues can now delay rejected messages and redeliver them with increasing delays, configured via x-delayed-retry-min, x-delayed-retry-multiplier, and x-delayed-retry-max. This removes the need for chained dead-letter queues to handle transient failures.
A new x-mqtt-topic exchange type lets AMQP consumers subscribe to MQTT messages using MQTT topic filters as binding keys. This makes it straightforward to bridge MQTT and AMQP workloads without additional middleware.
On the performance side, publish confirms now sync only affected files rather than the full data directory, and message store segments use page-sized folios to reduce write operations. Socket buffer pooling lowers memory usage across connections, and tcp_nodelay now defaults to true, which reduces latency for batch acknowledgments.
The management UI replaces Chart.js with uPlot, bringing better hover synchronization across plots and a new refresh control for pausing or adjusting the auto-refresh interval.
This release also introduces tcp_send_timeout to disconnect inactive clients, tls_ciphersuites for TLS 1.3 cipher selection, and several important bug fixes.
Read the full release notes on GitHub for all changes, fixes, and upgrade notes.
Hailay Gebremeskel