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

Download history 217/week @ 2024-04-01 75/week @ 2024-04-08 109/week @ 2024-04-15 133/week @ 2024-04-22 108/week @ 2024-04-29 102/week @ 2024-05-06 122/week @ 2024-05-13 104/week @ 2024-05-20 156/week @ 2024-05-27 112/week @ 2024-06-03 70/week @ 2024-06-10 109/week @ 2024-06-17 118/week @ 2024-06-24 68/week @ 2024-07-01 40/week @ 2024-07-08 78/week @ 2024-07-15

322 每月下载量
用于 4 crates

Unlicense

3.5MB
2.5K SLoC

Rust 2.5K SLoC // 0.1% comments Shell 303 SLoC // 0.1% comments Go 93 SLoC

包含 (ELF exe/lib, 6.5MB) utils/toxic/toxic

Build Status Documentation

纯Rust MQTT客户端,力求简单、健壮和高效。此库采用了一种观点,即在事件循环线程中启动所有与MQTT相关的网络IO。事件循环负责执行必要的健壮性任务,而无需用户重新思考所有必需的执行内容。

客户端API将通过通道与事件循环通信。请查阅文档以了解可能的客户端操作。

特性


异步

异步。新的发布/订阅不需要在发送下一消息之前等待上一消息的ack。与同步调用相比,速度更快。

基于飞行队列长度的背压,适用于慢速网络

并发操作的外出和传入流并不意味着内部MQTT状态缓冲区无限增长,消耗内存。当达到飞行消息限制时,事件循环会停止处理新的用户请求,直到飞行队列限制恢复正常,背压将传播到客户端调用。

对于慢速网络也是如此。通道缓冲区将很好地平滑延迟峰值,但长时间的糟糕网络将通过背压检测到。

节流

许多托管代理将只允许以一定速率发送消息。任何峰值都可能导致代理断开客户端连接。节流限制将确保不会发生这种情况。即使是在重新连接期间内部未确认消息的重传也是如此。

自动重新连接

所有间歇性断开连接都通过自动重新连接来处理。但是否执行此操作的控制权在用户手中。

其他

  • 按需断开和重新连接
  • 内置JWT身份验证,适用于GCP iotcore等SaaS代理
  • 使用RustTLS的TLS。交叉编译和多平台支持非常容易
  • 自动重新订阅。当clean_session=false时通常不需要,但在开源代理在保存状态之前崩溃时可能有所帮助

不支持的功能

  • 使用断开连接数据包取消mqtt will

依赖项

~18MB
~417K SLoC