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 在 网络编程
989 每月下载量
用于 4 crates
74KB
1.5K SLoC
general-mq
消息队列的通用接口。现在我们提供了以下实现
- AMQP 0-9-1
- MQTT
使用这些类,您可以配置具有以下属性的队列
- 单播或广播。
- 可靠或尽力而为。
注意
- MQTT使用共享队列来实现单播。
- AMQP使用确认通道来实现可靠发布,而MQTT使用QoS 1来实现可靠发布/订阅。
连接和队列的关系
术语连接描述的是到消息代理的TCP/TLS连接。术语队列描述的是连接中的消息队列或主题。您可以使用一个连接来管理多个队列,或一个连接来管理一个队列。
队列一次只能作为接收者或发送者。
具有相同名称的发送/接收队列的连接
发送者和接收者通常是不同的程序,有两个连接来保存两个队列。
对于特殊情况,一个程序使用相同的队列同时作为发送者和接收者
- AMQP实现使用一个通道来管理一个队列,因此程序可以使用一个连接来管理所有队列。
- MQTT实现必须使用一个连接来管理一个队列,否则发送者和接收者都会收到数据包。
测试
请准备一个位于localhost的RabbitMQ代理和一个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