4个版本 (2个破坏性更新)

0.3.0 2023年2月12日
0.2.2 2022年11月27日
0.2.1 2021年7月14日
0.1.0 2021年2月2日

#9 in #amqp-client

每月27次下载

Apache-2.0

330KB
7.5K SLoC

金属MQ

Crates.io Build Status

构建和运行

metalmq正在开发中,它不是一个完整的特性,但您可以尝试使用cargo run运行。

cargo run --bin metalmq
## or to enable logs
RUST_LOG=debug cargo run --bin metalmq
RUST_LOG=metalmq=trace cargo run --bin metalmq
cargo test --tests

## or to run integration tests
cargo test --package metalmq --test it

examples目录中有些示例,它们实现了metalmq-client库的简单场景。要运行,请执行

RUST_LOG=metalmq_client=trace cargo run --example publish-consume

metalmq-client中运行测试

cargo test --package metalmq-client --test it

AMQP兼容性

为了AMQP兼容性,我们使用Python库pikapytest框架来验证metalmq服务器的兼容性。

cd amqp-compliance
pytest

合规性矩阵

方法 字段
连接。
通道。
交换声明 ✅ 交换
❌ 类型
✅ 被动
❌ 持久(无持久化)
❓ 参数
队列声明 ✅ 队列
✅ 被动
❓ 持久
✅ 独占
✅ 自动删除
基本。

AMQP 0.9客户端库

metalmq-client中有一个Rust异步客户端,它实现了AMQP 0.9.1协议的一部分。您可以在metalmq服务器或rabbitmq上尝试。

#docker run -p 5672:5672 -p 15672:15672 --rm rabbitmq:3-management
cargo test --lib metalmq-client

为了验证AMQP包,我们还需要一个稳定的AMQP客户端实现,即pika。它在Python上运行,因此需要安装pipenv才能运行。

cd amqp-compliance
pytest

调试测试

在测试开始时打开日志记录。

#[tokio::test]
async fn test() -> Result<()> {
    env_logger::builder().is_test(true).try_init();
}

使用环境变量设置启动测试。

RUST_LOG=metalmq_client=trace cargo test -- --exact exchange::declare_exchange_with_different_type --show-output

单元测试覆盖率

使用覆盖率运行单元测试。

rustup component add llvm-tools-preview
cargo install grconv

mkdir -p target/coverage/data
make metalmq-cover
open target/coverage/html/index.html

使用tokio控制台

在示例中,发布-消费测试依赖于tokio控制台。

RUSTFLAGS="--cfg tokio_unstable" cargo run --example publish-consume

依赖项

~10–24MB
~295K SLoC