34 个版本 (19 个破坏性更新)
0.19.0 | 2023年12月12日 |
---|---|
0.18.0 | 2023年9月12日 |
0.17.0 | 2023年8月15日 |
0.16.0 | 2023年7月24日 |
0.0.1 | 2020年5月15日 |
#218 in 网络编程
3,259 每月下载量
用于 8 个 Crates (7 个直接)
470KB
10K SLoC
rumqttd
Rumqttd 是用 Rust 编写的性能高效的 MQTT 代理。它是轻量级且可嵌入的,这意味着您可以将它用作库并在代码中扩展功能
入门
您可以直接运行代理,通过运行带有配置文件的二进制文件来实现
cargo run --release -- -c rumqttd.toml
示例配置文件位于仓库的根目录中。
构建 docker 镜像
为了在 docker 容器中运行 rumqttd,请在项目的根目录中运行 build_rumqttd_docker.sh
来构建镜像。该 shell 脚本将使用 docker 构建 rumqttd 并将其打包到 alpine 镜像中。然后,您可以使用默认配置运行 rumqttd
./build_rumqttd_docker.sh
docker run -p 1883:1883 -p 1884:1884 -it rumqttd
或者,您可以使用自定义配置文件运行 rumqttd
,通过挂载文件并将其作为参数传递
./build_rumqttd_docker.sh
docker run -p 1883:1883 -p 1884:1884 -v /absolute/path/to/rumqttd.toml:/rumqttd.toml -it rumqttd -c /rumqttd.toml
如何使用 TLS
要使用 TLS 将 MQTT 客户端连接到 rumqttd,请使用 provision 创建相关的证书,如下所示
provision ca // generates ca.cert.pem and ca.key.pem
provision server --ca ca.cert.pem --cakey ca.key.pem --domain localhost // generates localhost.cert.pem and localhost.key.pem
provision client --ca ca.cert.pem --cakey ca.key.pem --device 1 --tenant a // generates 1.cert.pem and 1.key.pem
更新 rumqttd 和 rumqttc 的配置文件以包含生成的证书
[v4.2.tls]
certpath = "path/to/localhost.cert.pem"
keypath = "path/to/localhost.key.pem"
capath = "path/to/ca.cert.pem"
您还可以使用 certgen、tls-gen 或 openssl 生成自签名证书,尽管我们推荐使用 provision。
注意:将包含生成的 TLS 证书的正确配置文件(带有证书的绝对路径)的文件夹挂载到 docker 中的 rumqttd 以启用 TLS 连接。
动态更新日志过滤器
日志级别和过滤器可以动态更新,无需重启代理。要更新过滤器,我们可以向由我们的控制台暴露的 /logs
端点发送 POST 请求,在请求体中以纯文本形式提供新的过滤器。例如,要获取本地运行并暴露在端口 3030 上的 rumqttd 的“调试”级别日志,我们可以这样做:
curl -H "Content-Type: text/plain" -d "rumqttd=debug" 0.0.0.0:3030/logs
过滤器的一般语法是:
target[span{field=value}]=level
因此,对于 ID 为“pub-001”的客户端,其发生的任何日志都会是以下形式:[{client_id=pub-001}]
。更多信息请参见这里
依赖关系
~17–33MB
~515K SLoC