11 releases
0.1.10 | Sep 23, 2024 |
---|---|
0.1.9 | Jun 4, 2024 |
0.1.8 | Feb 10, 2024 |
#741 in Asynchronous
17KB
241 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
-
RabbitMQ Deployment:
-
Rust (version 1.6+):
Usage
Exposes two structs:
-
RabbitMQ
, which is a manager of the queues, and the main access point to publish messages, or to get the innerQueue
s. -
Queue
, which represents a singleQueue
, 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–18MB
~259K SLoC