10个版本

0.1.9 2024年6月4日
0.1.8 2024年2月10日

#706 in 异步

Download history 20/week @ 2024-04-26 10/week @ 2024-05-03 36/week @ 2024-05-10 50/week @ 2024-05-17 63/week @ 2024-05-24 186/week @ 2024-05-31 40/week @ 2024-06-07 6/week @ 2024-06-14 6/week @ 2024-06-21 1/week @ 2024-06-28 63/week @ 2024-07-05 9/week @ 2024-07-12 9/week @ 2024-07-19 14/week @ 2024-07-26 2/week @ 2024-08-02 65/week @ 2024-08-09

每月92次下载

MIT许可证

16KB
233

rabbit_mqr

基于lapin构建的极简RabbitMQ客户端。

此crate主要基于我对lapin和amqprs的繁琐体验。如果您只需要一个客户端来逐个发布和异步读取队列中的消息,那么这个crate就是您需要的。

没有消费者,有一个简单的API来注册队列,以及发布、确认/nack和从队列中读取消息。

安装

cargoadd rabbit_mqr

需求

使用

公开了两个结构体

  • RabbitMQ,它是队列的管理器,也是发布消息或获取内部Queue的主要访问点。

  • Queue,它表示单个Queue,并具有基本操作。

完整crate文档可以在此处找到.

基本示例

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

第三方

此crate是基于lapin构建的,请参阅他们的MIT许可证此处

依赖项

~8–21MB
~296K SLoC