8000 Releases ยท rmqtt/rmqtt ยท GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: rmqtt/rmqtt

0.15.0-beta.4

26 Apr 08:55
4a56902
Compare
Choose a tag to compare
  1. Remove gRPC client configuration from rmqtt, added gRPC client configuration to rmqtt-plugins/rmqtt-cluster-raft.toml
  2. Add grpc_server_actives and grpc_clients_actives to stats.rs
  3. Optimize build version information display
  4. Improved gRPC handling, add streaming-based message forwarding.
  5. Forward inter-node messages using gRPC streaming mode.

0.15.0-beta.3

19 Apr 15:10
e270ce7
Compare
Choose a tag to compare

Update Overview

This release introduces a series of systematic optimizations focusing on network stack refactoring, protocol adaptation, deployment flexibility, and feature modularity. Highlights include:

  • Refactored the network layer based on the Tokio asynchronous runtime, removing dependency on the ntex framework;
  • Added support for multiple protocols including TCP, TLS, WS, and WSS, with a standardized transport protocol adaptation layer;
  • Enabled parallel binding of multiple listeners for heterogeneous network endpoints and internal/external network isolation;
  • Provides a library mode for seamless integration into user projects, enabling flexible embedding and on-demand customization;
  • Introduced 12 optional feature modules with compile-time selective inclusion;
  • Established a standardized plugin extension point mechanism for protocol extension and business logic injection.

1. Modular Refactoring of the Network Layer

The network layer has been completely refactored using Tokio, replacing the ntex framework and its MQTT implementation with a self-developed asynchronous network stack to improve performance and decouple framework dependencies.
The ntex-mqtt codec components are retained and optimized to balance protocol maturity and compatibility, enhancing code reusability.


2. Native Multi-Protocol Support

A unified protocol adaptation layer is introduced with full support for TCP, TLS (MQTT over SSL), WebSocket (WS), and its secure variant WSS.
The implementation adheres to standard specifications such as RFC 6455 and RFC 8446, allowing users to flexibly configure access channels according to network environments and security policies.


3. Parallel Listener Binding Mechanism

A single broker instance can launch multiple listeners in parallel, with each listener independently configurable in terms of protocol type, binding address, port, and related parameters.
This allows flexible binding to various network endpoints and protocol channels. Through fine-grained configuration, users can precisely control different networks, protocols, performance, and resource usage to meet high concurrency and multi-scenario deployment requirements.

  • Flexible Deployment: Each listener can have custom parameters (e.g., max connections, TLS certificate paths, heartbeat timeouts), supporting diverse deployment scenarios;
  • Internal/External Network Isolation: Separate listeners can be used to isolate internal management traffic from external business traffic, enabling clear boundaries and controllable access policies;
  • Operations-Friendly: Simplifies integration with load balancers and firewall rules, easing deployment and monitoring configuration.

4. Library Mode Embedding

Released as a crate-level library, rmqtt can be easily embedded into user services by simply adding it as a Cargo dependency. This integration model supports deep customization and feature trimming, making it ideal for microservices and edge computing scenarios.

To use the RMQTT crate (version 0.15.0-beta.2) in your Rust project, refer to: https://crates.io/crates/rmqtt/0.15.0-beta.2


5. Feature Matrix for Optional Trimming (12 Features)

A modular feature system with 12 components is built under Cargoโ€™s [features] configuration, supporting flexible compile-time feature combination:

  • Reduces unnecessary dependencies and resource consumption;
  • Controls the final binary size and improves runtime efficiency;
  • Supports minimal integration and deployment scenarios.

6. Plugin-Based Extension Mechanism

A non-intrusive plugin architecture is adopted, defining standardized extension interfaces (Extension Points) to support:

  • Runtime hot-plugging of custom components;
  • Extending features like authentication, authorization, and message routing without modifying core code;
  • Deep customization needs for protocol extension and business logic.

Note: This update strictly preserves the original functional semantics while optimizing architecture and expression. No undisclosed functional modules have been added. All features are traceable to the original design goals.


0.13.0

11 Apr 13:06
fb8fa52
Compare
Choose a tag to compare

0.12.1

16 Mar 06:09
9d4c3db
Compare
Choose a tag to compare
  1. Fix the issue of unacknowledged in-flight message loss. #168

0.12.0

11 Mar 13:14
78d0983
Compare
Choose a tag to compare
  1. The "bridge-ingress-mqtt" plugin supports TLS. #149
  2. The "bridge-egress-mqtt" plugin supports TLS. #156
  3. Install the default crypto backend for Rustls. #158
  4. Upgrade plugin deps.
    • Upgrade plugin 'rmqtt-bridge-ingress-mqtt' and 'rmqtt-bridge-egress-mqtt' deps to ntex-mqtt = "4.5.1" and ntex = "2.10.0" #157
    • Upgrade plugin deps to salvo = "0.76"
    • Upgrade deps to tokio-tungstenite = "0.26" #159
    • Upgrade deps to scc = "=2.3.1" #159
    • Upgrade deps to rand = "0.9, config = "0.15" #166

0.11.0

29 Dec 10:23
0ec9c19
Compare
Choose a tag to compare
  1. 'rmqtt-http-api'
    • '/metrics/prometheus', reset Prometheus GaugeVec on every refresh, fix the issue of statistical data being duplicated and accumulated. #132
    • '/health/check', Optimize the health check API and adjust the data output format. #132
    • '/brokers/{node}' and /nodes/{node}, Optimize the 'running' field value of HTTP API '/brokers/{node}' and /nodes/{node}. #132
    • Adjust the display format of node status in /api/v1/stats/sum and /api/v1/stats to Boolean type. #148
    • /v1/brokers and /api/v1/nodes return rustc_version #128
  2. 'rmqtt-cluster-raft'
    • The cluster node health check feature, when enabled, will actively exit the program when a node becomes unavailable. This feature helps
      prevent issues such as network partitioning (split-brain), ensuring that connections on the unavailable node can be re-routed through the
      cluster load balancer to other available nodes. #133
    • Add plugin document 'cluster-raft.md' #134
  3. Pin or upgrade some dependency versions. #136
  4. 'rmqtt-retainer'
    • Add configuration for Retain Message TTL. #138 #139
    • Remove the retain_available configuration option. The retain message feature will now be enabled by default when the "rmqtt-retainer" plugin is activated. #140
  5. 'rmqtt-bridge-egress-kafka'
    • Fix the timestamp issue, it should be in milliseconds. #144
  6. โ€Ž'rmqtt-sys-topic'
    • Remove message discard events from the $SYS system topics. #145
  7. Change the message dropped log level to DEBUG. #137
    • To monitor message loss, you can use the following HTTP APIs: '/api/v1/metrics', '/api/v1/metrics/prometheus', or listen for the message_dropped event via a webhook.
  8. Add a timeout to gRPC message delivery. #146
  9. Periodically check the availability of the gRPC connection using Ping messages. #147
  10. Optimize message forwarding between nodes by removing the retry-once feature. #147
  11. Fix the issue where setting the configuration option message_expiry_interval to 0 in rmqtt.toml causes messages to expire immediately. The intended behavior should ensure messages never expire. #141
  12. Fix the potential overflow issue in multiplication operations. #142

0.10.0

09 Nov 05:00
779bfce
Compare
Choose a tag to compare
  1. Add plugin rmqtt-bridge-ingress-pulsar. #121
  2. rmqtt-bridge-egress-pulsar
    • remote.ordering_key generation supports random numbers, clientid. #123
    • At startup, if the Pulsar service is unavailable, it will retry every 3 seconds. #126
  3. rmqtt-message-storage and rmqtt-session-storage now support redis-cluster mode. #119
  4. Optimize the connection handshake process. #116
  5. rmqtt-cluster-raft
    • Snapshot compression algorithm enabled, default: zstd
  6. Add 'client_connack_unavailable_error' metric. http-api#/api/v1/metrics
  7. Prometheus format metric data supports conditional queries. #114
  8. Session count limit per node. #109
     #Maximum session limit, 0: no limit, default value: 0
     mqtt.max_sessions = 0
    
  9. Fixed the issue of potentially inaccurate inflight message statistics. #108
  10. Upgrade and organize dependency libraries. #122

0.9.0

13 Oct 03:25
664eecf
Compare
Choose a tag to compare
  1. Add plugin 'rmqtt-bridge-egress-nats'. #101
  2. Add plugin 'rmqtt-bridge-egress-reductstore'. #104
  3. rmqtt-http-api
    • Add api GET '/api/v1/metrics/prometheus', return the status data and statistical metrics of all nodes in the cluster in Prometheus format. #107
    • Add api GET '/api/v1/clients/offlines' and DELETE '/api/v1/clients/offlines' #105
  4. Optimized the WebSocket stream and fixed the issue of potential overflow when the data packet is too large. #106

0.8.0

30 Sep 14:23
68fdcb4
Compare
Choose a tag to compare
  1. Add plugin 'rmqtt-auth-jwt' #92
  2. Optimize the method for retrieving the current time
  3. ACL permission preset feature
  4. Add ACL permission preset feature to 'rmqtt-auth-http'
  5. rmqtt-cluster-raft
  6. Remove config item 'storage_available'. Affected plugins: rmqtt-bridge-ingress-kafka, rmqtt-bridge-ingress-mqtt, rmqtt-http-api, rmqtt-sys-topic. #91
  7. Update dependencies, tikv-jemallocator = "0.6", salvo = "0.71", tokio-cron-scheduler = "0.11"

0.7.0

06 Sep 12:47
4789545
Compare
Choose a tag to compare
  1. Add plugin "rmqtt-bridge-egress-pulsar". #82 https://github.com/rmqtt/rmqtt/commit/f382dd942e299cb589bc4545d5aa961ef535fe26
  2. Add plugin 'rmqtt-auto-subscription'. https://github.com/rmqtt/rmqtt/commit/586c562404945628def6e608a61935951e4bc0d9
  3. Add plugin 'rmqtt-topic-rewrite'. https://github.com/rmqtt/rmqtt/commit/3ca34613e468ea68d604c958b88d19b46feb5bbc
  4. Implement exclusive subscription. https://github.com/rmqtt/rmqtt/commit/ed268d61f062bcb0f308220e7d5b30f8c4ac1483
  5. Implementing the basic delayed publishing feature. https://github.com/rmqtt/rmqtt/commit/3e50c3fdbb06ca1f14a192ffcfb41fd3dc041069
  6. Raft nodes support specifying the listening address separately. https://github.com/rmqtt/rmqtt/commit/10dbce8dcc00cf181db61b2c1155909423e62201
  7. Fixed: Kick out the specified client. The API call was successful, but the response returned a 404 error. #81 https://github.com/rmqtt/rmqtt/commit/54cb5be0fee4f11480a60285b6d49c2716e6d389
  8. arm64 platform docker image support. #74
0