9 releases

0.1.8 Feb 10, 2024
0.1.7 Feb 6, 2024

#675 in Asynchronous

Download history 27/week @ 2024-02-02 13/week @ 2024-02-09 224/week @ 2024-02-23 55/week @ 2024-03-01 1/week @ 2024-03-08 3/week @ 2024-03-15 28/week @ 2024-03-22 27/week @ 2024-03-29 14/week @ 2024-04-05 11/week @ 2024-04-12

80 downloads per month

MIT license

16KB
233 lines

rabbit_mqr

Extremely simplified RabbitMQ client built on-top of lapin.

This crate was mainly created from my cumbersome experience with both lapin and amqprs. If you simply need a client to publish and asynchronously read messages from a queue, one-by-one, this is the crate for you.

There are no consumers, there is a simple API to register queues, and to publish, ack/nack, and read messages from the queue.

Installation

cargo add rabbit_mqr

Requirements

Usage

Exposes two structs:

  • RabbitMQ, which is a manager of the queues, and the main access point to publish messages, or to get the inner Queues.

  • Queue, which represents a single Queue, and has the basic operations.

Full crate documentation can be found here.

Basic Example

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(())
}

License

MIT See LICENSE.md

Third party

This crate is built on-top of lapin see their MIT license here

Dependencies

~8–20MB
~290K SLoC