Crate amqprs

source ·
Expand description

AMQP 0-9-1 client implementation compatible with RabbitMQ.

It is currently based on async tokio runtime, and cannot be configured to use another runtime by user.

User usually starts by openning an AMQP Connection and register the connection callbacks, then open an AMQP Channel on the connection and register the channel callbacks.

Quick Start

use amqprs::{
    callbacks,
    security::SecurityCredentials,
    connection::{OpenConnectionArguments, Connection},
};

// Build arguments for new connection.
let args = OpenConnectionArguments::new("localhost", 5672, "user", "bitnami");
// Open an AMQP connection with given arguments.
let connection = Connection::open(&args).await.unwrap();

// Register connection level callbacks.
// In production, user should create its own type and implement trait `ConnectionCallback`.
connection.register_callback(callbacks::DefaultConnectionCallback).await.unwrap();

// ... Now, ready to use the connection ...

// Open an AMQP channel on this connection.
let channel = connection.open_channel(None).await.unwrap();
// Register channel level callbacks.
// In production, user should create its own type and implement trait `ChannelCallback`.
channel.register_callback(callbacks::DefaultChannelCallback).await.unwrap();

// ... Now, ready to use the channel ...
// For examples:
channel.flow(true).await.unwrap();

// gracefully shutdown.
channel.close().await.unwrap();
connection.close().await.unwrap();

Optional Features

  • “traces”: enable tracing in the library.
  • “compliance_assert”: enable compliance assertion according to AMQP spec. If enabled, library always check user inputs and panic if any non-compliance. If disabled, then it relies on server to reject.
  • “tls”: enable SSL/TLS.
  • “urispec”: enable support of RabbitMQ URI Specification

Modules

Callback interfaces of asynchronous message for Connection and Channel.
Implementation of AMQP_0-9-1’s Channel class compatible with RabbitMQ.
Implementation of AMQP_0-9-1’s Connection class compatible with RabbitMQ.
Callback interfaces of asynchronous content data consumer.
Error type can be returned by the APIs.
This module provides configuration API of Security and Access Control.
This module provides TLS adaptor.

Structs

Used by channel publish_ack callback.
AMQP message properties.
Used by channel cancel callback.
Used by connection’s close callback.
Used by channel close callback.
Used by consumer consume callback.
Used by channel publish_nack callback.
Used by channel publish_return callback.

Constants

Delivery Mode: persistent
Delivery Mode: transient/non-persistent