7个版本 (4个破坏性更新)
0.31.0 | 2019年9月17日 |
---|---|
0.30.1 | 2019年1月29日 |
0.10.1 | 2017年10月20日 |
0.10.0 | 2017年6月7日 |
0.3.0 | 2016年7月12日 |
#26 in #event-loop
322 每月下载量
用于 4 crates
3.5MB
2.5K SLoC
包含 (ELF exe/lib, 6.5MB) utils/toxic/toxic
纯Rust MQTT客户端,力求简单、健壮和高效。此库采用了一种观点,即在事件循环线程中启动所有与MQTT相关的网络IO。事件循环负责执行必要的健壮性任务,而无需用户重新思考所有必需的执行内容。
客户端API将通过通道与事件循环通信。请查阅文档以了解可能的客户端操作。
特性
异步
异步。新的发布/订阅不需要在发送下一消息之前等待上一消息的ack。与同步调用相比,速度更快。
基于飞行队列长度的背压,适用于慢速网络
并发操作的外出和传入流并不意味着内部MQTT状态缓冲区无限增长,消耗内存。当达到飞行消息限制时,事件循环会停止处理新的用户请求,直到飞行队列限制恢复正常,背压将传播到客户端调用。
对于慢速网络也是如此。通道缓冲区将很好地平滑延迟峰值,但长时间的糟糕网络将通过背压检测到。
节流
许多托管代理将只允许以一定速率发送消息。任何峰值都可能导致代理断开客户端连接。节流限制将确保不会发生这种情况。即使是在重新连接期间内部未确认消息的重传也是如此。
自动重新连接
所有间歇性断开连接都通过自动重新连接来处理。但是否执行此操作的控制权在用户手中。
其他
- 按需断开和重新连接
- 内置JWT身份验证,适用于GCP iotcore等SaaS代理
- 使用RustTLS的TLS。交叉编译和多平台支持非常容易
- 自动重新订阅。当clean_session=false时通常不需要,但在开源代理在保存状态之前崩溃时可能有所帮助
不支持的功能
- 使用断开连接数据包取消
mqtt will
依赖项
~18MB
~417K SLoC