10个版本
0.1.9 | 2024年6月4日 |
---|---|
0.1.8 | 2024年2月10日 |
#706 in 异步
每月92次下载
16KB
233 行
rabbit_mqr
基于lapin构建的极简RabbitMQ客户端。
此crate主要基于我对lapin和amqprs的繁琐体验。如果您只需要一个客户端来逐个发布和异步读取队列中的消息,那么这个crate就是您需要的。
没有消费者,有一个简单的API来注册队列,以及发布、确认/nack和从队列中读取消息。
安装
cargoadd rabbit_mqr
需求
使用
公开了两个结构体
-
RabbitMQ
,它是队列的管理器,也是发布消息或获取内部Queue
的主要访问点。 -
Queue
,它表示单个Queue
,并具有基本操作。
基本示例
use rabbit_mqr::{GetMessageResult, RabbitMQ};
use std::time::Duration;
use tokio::time::sleep;
#[tokio::main]
async fn main() -> Result<(), rabbit_mqr::lapin::Error> {
let mut rabbit_mq = RabbitMQ::new("amqp://guest:guest@localhost:5672/%2f", None).await?;
rabbit_mq.register_queue("test_queue", None, None).await?;
rabbit_mq
.publish_message("test_queue", b"1337".to_vec(), None)
.await?;
rabbit_mq
.publish_message("test_queue", b"1337".to_vec(), None)
.await?;
if let Some(test_queue) = rabbit_mq.get_queue("test_queue") {
while let Some(GetMessageResult {
message,
delivery_tag,
}) = test_queue.get_message().await?
{
println!("{}", String::from_utf8(message).unwrap());
// Prints: "1337"
test_queue.acknowledge_message(delivery_tag).await?;
sleep(Duration::from_millis(1337)).await;
}
}
Ok(())
}
许可证
MIT 请参阅LICENSE.md
第三方
依赖项
~8–21MB
~296K SLoC