Releases: rmqtt/rmqtt
0.17.1
What's Changed
- fix(net): fix conditional compilation and code organization #323 by @bittcrafter in #324
- chore(conf): bump rmqtt-conf version to 0.3.1 by @bittcrafter in #325
Full Changelog: 0.17.0...0.17.1
Note: This update only affects the ws feature of rmqtt-net, so no Docker images or precompiled installation packages will be generated.
0.17.0
What's Changed
- chore: bump version to 0.17.0 and add star history badges by @bittcrafter in #301
- docs: add FUNDING.yml file to support GitHub Sponsors by @bittcrafter in #302
- refactor(delayed): restructure delayed message handling and add debug… by @bittcrafter in #303
- feat: add NATS ingress bridge support by @bittcrafter in #304
- fix(queue): correct queue capacity check in push operation by @bittcrafter in #305
- docs: add offline message documentation links by @bittcrafter in #306
- docs: add detailed documentation links for MQTT protocol features by @bittcrafter in #307
- docs: add documentation links for Last Will message support by @bittcrafter in #308
- fix(connection): improve connection closing and error handling by @bittcrafter in #309
- chore(deps): upgrade pulsar client from 6.3.1 to 6.4.1 by @bittcrafter in #310
- feat(quic): add MQTT over QUIC protocol support with examples #64 by @bittcrafter in #315
- Allow Extraction of Client TLS Certificate (CN/SAN) at rmqtt-net or Plugin Layer in MQTT Context by @deluxetiky in #313
- fix(metrics): correct CPU load calculation formula by @bittcrafter in #319
- feat(config): add environment variable support for MQTT bridge credentials #317 by @bittcrafter in #320
New Contributors
- @deluxetiky made their first contribution in #313
Full Changelog: 0.16.1...0.17.0
0.16.1
What's Changed
- docs: update version to 0.16.0 and add p2p-messaging documentation by @bittcrafter in #286
- chore(net): bump version from 0.1.5 to 0.2.0 by @bittcrafter in #287
- chore(deps): update rmqtt-net dependency to 0.2.0 by @bittcrafter in #288
- docs(p2p-messaging): add comprehensive plugin description by @bittcrafter in #289
- chore(conf): bump version from 0.1.1 to 0.2.0 by @bittcrafter in #290
- chore(deps): update rmqtt-conf dependency to 0.2.0 by @bittcrafter in #291
- chore(deps): pin pulsar to exact version 6.3.1 in rmqtt-bridge-egress-pulsar and rmqtt-bridge-ingress-pulsar plugins by @bittcrafter in #295
- docs(auth-http): add subscription ACL caching limitation note by @bittcrafter in #298
Full Changelog: 0.16.0...0.16.1
Note: This update only affects cargo install rmqttd, so no Docker images and precompiled installation packages will be generated.
0.16.0
What's Changed
- chore(logging): change default log level from Debug to Info by @bittcrafter in #273
- fix(session): ensure proper cleanup of inflight messages on publish failure by @bittcrafter in #275
- refactor(codec): separate codec and broker publish types and bump codec to 0.2.0 by @bittcrafter in #276
- perf(shutdown): reduce shutdown delay and exit explicitly by @bittcrafter in #283
- feat(shared): add targeted client forwarding support by @bittcrafter in #284
- feat: add new p2p-messaging plugin by @bittcrafter in #285
Full Changelog: 0.15.0...0.16.0
0.15.1
What's Changed
- chore: bump version to 0.15.1 and improve shutdown process by @bittcrafter in #281
Full Changelog: 0.15.0...0.15.1
0.15.0
What's Changed
- chore(deps/net): update core dependencies, bump component versions, and enhance tokio features by @bittcrafter in #254
- perf(session): optimize offline message handling with VecDeque by @bittcrafter in #260
- feat(plugins): introduce unified plugins meta-package with enhanced feature organization by @bittcrafter in #261
- feat(plugin): enhance plugin configuration management with builder pattern by @bittcrafter in #262
- docs: update README with latest version links and simplify version references by @bittcrafter in #264
- refactor(plugin, config): make plugins_config_map_add generic and remove default plugin path by @bittcrafter in #265
- feat(plugins): enhance configuration handling with defaults and better error reporting by @bittcrafter in #266
- docs: add library mode integration and crate badges to README by @bittcrafter in #267
- chore: release version 0.15.0 and update documentation by @bittcrafter in #268
- chore: synchronize all plugin versions with main 0.15.0 release by @bittcrafter in #269
- chore(gitignore): add publish script files to gitignore by @bittcrafter in #270
Full Changelog: 0.15.0-rc.6...0.15.0
🚀 RMQTT 0.15.0
RMQTT 0.15.0 Stable Release is out!
This milestone version has gone through multiple Beta and RC iterations. The core framework is fully upgraded, the plugin system is more flexible, memory usage and performance are optimized, and clustering and observability are significantly improved.
🔧 Core Framework & Network Layer
-
Network Layer Refactoring
- Completely rewritten on Tokio async runtime, fully removing ntex dependency, decoupling framework constraints, and improving performance.
- Reused and optimized ntex-mqtt codec code, maintaining protocol maturity and compatibility.
- Lower memory usage for sessions and connections: removing ntex-mqtt runtime reduces extra abstraction and context overhead, improving single-node connection capacity under high concurrency.
-
Native Multi-Protocol Support
- Supports TCP / TLS (MQTT over SSL) / WebSocket (WS) / WSS.
- Compliant with RFC 6455, RFC 8446, allowing flexible access channel configuration.
-
Multiple Listener Parallel Binding
- Single broker can start multiple Listeners concurrently with independent protocol, port, heartbeat, and TLS certificate settings.
- New ListenerId supports management by ID instead of port.
- Supports internal/external network isolation, load balancing, and fine-grained operations.
⚡ Performance & Storage
-
Offline Message Ordering Optimization
- Improved delivery mechanism ensures message order closer to original publishing sequence.
max_inflightconfigurable to balance order consistency vs. throughput performance.
-
Session Storage Optimization
- Storage operations moved to background tasks for higher concurrency.
- Added metrics with active/offline session distinction and timeout protection.
-
Modular Storage
- Storage backends (ram / sled / redis) fully modular, selectable via Cargo feature.
- Retainer and message storage configuration more flexible, with improved logging and error handling.
- Retainer default TTL adjustment:
retained_message_ttlchanged from 1m → 0m (default is never expire).
🛠 Plugin System
-
Plugin System Upgrade
- Introduced unified meta-package for better functionality organization.
- Plugin configuration uses builder pattern, with default configs and clearer error reporting.
- Added register_named() for explicit plugin registration.
plugins_config_map_addis now generic, more flexible configuration.
-
Plugin Architecture Improvements
- Webhook / Auth-HTTP plugins: removed global HTTP client and once_cell, replaced with instance-based management.
- Plugin initialization supports config map.
- Bridge plugin: fixed error handling for MQTT v4/v5, replaced
unreachable!()with explicit error return and log.
🔗 Clustering & Networking
-
Cluster gRPC
-
Supports streaming-based message forwarding.
-
Added concurrency and timeout settings:
worker_threadsnode_grpc_batch_sizenode_grpc_client_concurrency_limitnode_grpc_client_timeout
-
-
Raft Upgrade
- Upgraded to raft v0.5.x, supporting async snapshot, parallel optimization, and compression improvements.
- Removed global backoff strategy, replaced with instance-based ExponentialBackoff.
-
Cluster Plugin Improvements
- cluster-broadcast adds health monitoring.
- Subscription sync, error handling, and logging improved.
🌐 HTTP API & Observability
-
All routes now have /api/v1 prefix.
-
Health Check API:
/api/v1/health/check/{node}with JSON output.- Node status determined via NodeHealthStatus.is_running().
-
Health checks and Prometheus metrics enhanced, supporting cluster init timeout detection.
-
HTTP API monitoring and metrics improved.
⚙️ Configuration, Build & Operations
- Plugin initialization supports config map configuration.
- Dockerfile improvements: ENTRYPOINT supports runtime arguments.
- Build config:
panic=abortenabled to reduce runtime overhead. - Updated core dependencies with enhanced Tokio features.
- Log cleaning and optimization across cluster, storage, and network modules.
- New installation method:
cargo install rmqttdfor one-step deployment.
🛡️ Stability & Error Handling
- Reduced
panic!usage, unified to explicit error returns. - Handshake module timeout control added.
- Unified concurrency control and clearer thread management.
- cluster, executor, storage, bridge modules enhanced with error logs and retry mechanisms.
📚 Documentation & Maintenance
-
Rust docs updated to 1.85.0.
-
Updated
cluster-raft.mdwith Raft configuration details. -
README improvements:
- Added DeepWiki badge, Crate badge.
- Simplified version references and added library mode integration instructions.
-
All plugin versions synchronized with 0.15.0.
🎯 Summary
- Faster: Optimized Tokio network stack, Raft, and gRPC streaming.
- Lighter: Removed ntex, significantly reducing session/connection memory usage.
- More Flexible: Modular storage, plugin meta-package, multi-protocol & multi-listener support.
- Easier to Use: Supports
cargo install rmqttd, simplified config, improved docs and observability.
0.13.4
What's Changed
- perf(session): optimize offline message handling with VecDeque by @bittcrafter in #259
Full Changelog: 0.13.3...0.13.4
0.15.0-rc.6
What's Changed
- build(net): enable all socket2 features by @bittcrafter in #250
- chore(deps): update multiple dependencies and bump versions by @bittcrafter in #253
Full Changelog: 0.15.0-rc.5...0.15.0-rc.6
0.15.0-rc.5
What's Changed
- feat(node): revamp busy state handling and bump version to 0.15.0-rc.5 by @bittcrafter in #246
- feat(http-api): enhance stats monitoring and bump versions by @bittcrafter in #247
- feat(rmqtt-net): support proxy protocol by @timzaak in #248
- refactor(concurrency): streamline thread management and configuration by @bittcrafter in #249
Full Changelog: 0.15.0-rc.4...0.15.0-rc.5
0.13.3
What's Changed
- build: enable panic abort in release profile by @bittcrafter in #244
- feat(bridge): improve string handling and bump version to 0.13.3 by @bittcrafter in #245
Full Changelog: 0.13.2...0.13.3