46次发布

0.1.10 2024年8月16日
0.1.6 2024年7月30日
0.0.36 2024年2月16日
0.0.35 2023年12月15日
0.0.6 2023年3月31日

#529网络编程

Download history 3/week @ 2024-05-03 1/week @ 2024-05-10 358/week @ 2024-05-17 312/week @ 2024-05-24 29/week @ 2024-05-31 13/week @ 2024-06-07 8/week @ 2024-06-14 3/week @ 2024-06-21 2/week @ 2024-06-28 13/week @ 2024-07-19 402/week @ 2024-07-26 375/week @ 2024-08-02 24/week @ 2024-08-09 187/week @ 2024-08-16

989 每月下载量
用于 4 crates

MIT 许可证

74KB
1.5K SLoC

crates.io Documentation CI Coverage License

general-mq

消息队列的通用接口。现在我们提供了以下实现

  • AMQP 0-9-1
  • MQTT

使用这些类,您可以配置具有以下属性的队列

  • 单播或广播。
  • 可靠或尽力而为。

注意

  • MQTT使用共享队列来实现单播。
  • AMQP使用确认通道来实现可靠发布,而MQTT使用QoS 1来实现可靠发布/订阅。

连接和队列的关系

术语连接描述的是到消息代理的TCP/TLS连接。术语队列描述的是连接中的消息队列或主题。您可以使用一个连接来管理多个队列,或一个连接来管理一个队列。

队列一次只能作为接收者或发送者。

具有相同名称的发送/接收队列的连接

发送者和接收者通常是不同的程序,有两个连接来保存两个队列。

对于特殊情况,一个程序使用相同的队列同时作为发送者和接收者

  • AMQP实现使用一个通道来管理一个队列,因此程序可以使用一个连接来管理所有队列。
  • MQTT实现必须使用一个连接来管理一个队列,否则发送者和接收者都会收到数据包。

测试

请准备一个位于localhostRabbitMQ代理和一个EMQX代理进行测试。

  • 使用Docker安装

    $ docker run --rm --name rabbitmq -d -p 5672:5672 rabbitmq:management-alpine
    $ docker run --rm --name emqx -d -p 1883:1883 emqx/emqx
    

然后运行测试

$ cargo test --test integration_test -- --nocapture

示例

启动RabbitMQ,然后运行AMQP示例

$ cargo run --example simple

启动EMQX,然后运行MQTT示例

$ RUN_MQTT= cargo run --example simple

依赖项

~22–35MB
~665K SLoC