amqprs
Yet another RabbitMQ client implementation in rust with different design goals.
Design philosophy
- API first: easy to use and understand. Keep the API similar as python client library so that it is easier for users to move from there.
- Minimum external dependencies: as few external crates as possible.
- lock free: no mutex/lock in client library itself.
Design Architecture

Example: Consume and Publish
Link to full example code
// open a connection to RabbitMQ server
let connection = open
.await
.unwrap;
connection
.register_callback
.await
.unwrap;
// open a channel on the connection
let channel = connection.open_channel.await.unwrap;
channel
.register_callback
.await
.unwrap;
// declare a queue
let = channel
.queue_declare
.await
.unwrap
.unwrap;
// bind the queue to exchange
let rounting_key = "amqprs.example";
let exchange_name = "amq.topic";
channel
.queue_bind
.await
.unwrap;
//////////////////////////////////////////////////////////////////
// start consumer with given name
let args = new;
channel
.basic_consume
.await
.unwrap;
//////////////////////////////////////////////////////////////////
// publish message
let content = Stringfrom
.into_bytes;
// create arguments for basic_publish
let args = new;
channel
.basic_publish
.await
.unwrap;
// channel/connection will be closed when drop.
// keep the `channel` and `connection` object from dropping
// before pub/sub is done.
sleep.await;
// explicitly close
channel.close.await.unwrap;
connection.close.await.unwrap;
Optional Features
- "traces": enable
tracingin the library. - "compliance_assert": enable compliance assertion according to AMQP spec.
If enabled, library always check user inputs and
panicif any non-compliance. If disabled, then it relies on server to reject. - "tls": enable SSL/TLS.
- "urispec": enable support of RabbitMQ URI Specification