rabbit_mqr

Crates.iorabbit_mqr
lib.rsrabbit_mqr
version0.1.9
sourcesrc
created_at2024-02-03 05:52:09.067828
updated_at2024-06-04 19:03:42.788695
descriptionExtremely Simplified RabbitMQ Client
homepage
repositoryhttps://gitlab.com/robertlopezdev/rabbit_mqr
max_upload_size
id1125155
size17,074
(robertlopezdev)

documentation

README

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

Commit count: 16

cargo fmt