Crates.io | rabbit_mqr |
lib.rs | rabbit_mqr |
version | 0.1.10 |
source | src |
created_at | 2024-02-03 05:52:09.067828 |
updated_at | 2024-09-23 22:32:09.017277 |
description | Extremely Simplified RabbitMQ Client |
homepage | |
repository | https://gitlab.com/robertlopezdev/rabbit_mqr |
max_upload_size | |
id | 1125155 |
size | 17,687 |
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.
cargo add rabbit_mqr
RabbitMQ Deployment:
Rust (version 1.6+):
Exposes two structs:
RabbitMQ
, which is a manager of the queues, and the main access point to publish messages, or to get the inner Queue
s.
Queue
, which represents a single Queue
, and has the basic operations.
Full crate documentation can be found here.
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 See LICENSE.md
This crate is built on-top of lapin
see their MIT license here