The MQTT ecosystem in rust
You can hook custom function for authentication using client id, username and password. This custom function can be extended as per need, for e.g. fetching credentials from DB, using tokens or spawning processes, etc. see example for setup.
Previously only RSA keys were accepted, but now you can specify any TLS key formats currently supported by rustls, like ECC, PKCS8 to name a few.
user can specify v4 and/or v5 config. Specifying [v4.x]
in rumqttd.toml
is no longer mandatory, those who wish to only use v5 can now only include [v5.x]
in config.
specifying [console]
in rumqttd.toml
is now optional and can be safely removed if you don't wish to use console.
capath
in tls
config is only required is client authentication will be used ( see "verify-client-cert" feature below to know more ). Warning will be logged if the feature is disabled and capath
is being ignored.
rumqttd will log a warning if [ws.x]
is specified in config but getting ignored due to websocket
feature is disabled.
"websockets" feature is removed in favour of "websocket"
client auth is featured gated behind "verify-client-cert" by @de-sh in https://github.com/bytebeamio/rumqtt/pull/756
mutual TLS ( mTLS ) or client authentication, which is done verifying by certificates provided client is now optional with use-rustls
. capath
specifying CA certificate must be present in config file if client auth is enabled.
To enable client auth, you need to enable verify-client-cert
features ( disabled by default to match behavior of use-native-tls
)
/config
prints Router Config instead of returning console settings by @swanandx in https://github.com/bytebeamio/rumqtt/pull/727
build(deps): bump webpki from 0.22.1 to 0.22.2 by @dependabot in https://github.com/bytebeamio/rumqtt/pull/720
build(deps): bump rustix from 0.38.17 to 0.38.19 by @dependabot in https://github.com/bytebeamio/rumqtt/pull/735
update tungstenite and other dependencies by @swanandx in https://github.com/bytebeamio/rumqtt/pull/730
build(deps): bump openssl from 0.10.57 to 0.10.60 by @dependabot in https://github.com/bytebeamio/rumqtt/pull/759
fix: clippy lints by @swanandx in https://github.com/bytebeamio/rumqtt/pull/725
feat: install cross from git and cleanup by @swanandx in https://github.com/bytebeamio/rumqtt/pull/716
chore: move rust-version from workspace to respective crates by @swanandx in https://github.com/bytebeamio/rumqtt/pull/763
fix rust-cache with proper key and global RUSTFLAG by @swanandx in https://github.com/bytebeamio/rumqtt/pull/764
Full Changelog: https://github.com/bytebeamio/rumqtt/compare/rumqttd-0.18.0...rumqttd-0.19.0
bind_device
to NetworkOptions
to enable TCPSocket.bind_device()
MqttOptions::set_request_modifier
for setting a handler for modifying a websocket request before sending it.tungstenite
dependency.flume
dependency by @domenicquirl in https://github.com/bytebeamio/rumqtt/pull/653
ws_stream_tungstenite
to remove webpki
by @swanandx in https://github.com/bytebeamio/rumqtt/pull/704
This release fixes retained and will messages and adds support for will delay interval in MQTTv5. Rumqttd now have an enhanced release profile in Cargo.toml
which would improve performance while reducing the binary size! Here are some of the other changes:
Full Changelog: https://github.com/bytebeamio/rumqtt/compare/rumqttd-0.17.0...rumqttd-0.18.0
We can configure strategy for shared subscriptions using rumqttd.toml
The available strategies are as follows:
round_robin
(Default): select clients in turns as per the order of their subscription.
random
: randomly choose a client and sent it. ( note: once a client is chosen, we try to send as many msg as we can )
sticky
: stick to a subscriber and keep sending it all the messages until its gone.
Full Changelog: https://github.com/bytebeamio/rumqtt/compare/rumqttd-0.16.0...rumqttd-0.17.0
Blog Post discussing this release - https://bytebeam.io/blog/qos2-and-websockets-support-rumqttd/
outgoing_inflight_upper_limit
to MQTT5 MqttOptions
. This sets the upper bound for the number of outgoing publish messages (#615)proxy
feature gateeventloop::network_connect
to allow setting proxyMqttOptions
rustls
to 0.21
and tokio-rustls
to 0.24
(#606)
MqttState::new
takes max_outgoing_packet_size
which was set in MqttOptions
but not used (#622)Full Changelog: https://github.com/bytebeamio/rumqtt/compare/rumqttd-0.13.0...rumqttd-0.14.0
Same as v0.12.7