lapin_async/
lib.rs

1#![warn(rust_2018_idioms)]
2
3//! lapin-async
4//!
5//! this library is meant for use in an event loop. The library exposes, through the
6//! [Connection struct](https://docs.rs/lapin-async/0.1.0/lapin_async/connection/struct.Connection.html),
7//! a state machine you can drive through IO you manage.
8//!
9//! Typically, your code would own the socket and buffers, and regularly pass the
10//! input and output buffers to the state machine so it receives messages and
11//! serializes new ones to send. You can then query the current state and see
12//! if it received new messages for the consumers.
13//!
14//! ## Example
15//!
16//! ```rust,no_run
17//! use env_logger;
18//! use lapin_async as lapin;
19//! use log::info;
20//!
21//! use crate::lapin::{
22//!   BasicProperties, Channel, Connection, ConnectionProperties, ConsumerSubscriber,
23//!   message::Delivery,
24//!   options::*,
25//!   types::FieldTable,
26//! };
27//!
28//! #[derive(Clone,Debug)]
29//! struct Subscriber {
30//!   channel: Channel,
31//! }
32//!
33//! impl ConsumerSubscriber for Subscriber {
34//!   fn new_delivery(&self, delivery: Delivery) {
35//!     self.channel.basic_ack(delivery.delivery_tag, BasicAckOptions::default()).as_error().expect("basic_ack");
36//!   }
37//!   fn drop_prefetched_messages(&self) {}
38//!   fn cancel(&self) {}
39//! }
40//!
41//! fn main() {
42//!   env_logger::init();
43//!
44//!   let addr = std::env::var("AMQP_ADDR").unwrap_or_else(|_| "amqp://127.0.0.1:5672/%2f".into());
45//!   let conn = Connection::connect(&addr, ConnectionProperties::default()).wait().expect("connection error");
46//!
47//!   info!("CONNECTED");
48//!
49//!   let channel_a = conn.create_channel().wait().expect("create_channel");
50//!   let channel_b = conn.create_channel().wait().expect("create_channel");
51//!
52//!   channel_a.queue_declare("hello", QueueDeclareOptions::default(), FieldTable::default()).wait().expect("queue_declare");
53//!   let queue = channel_b.queue_declare("hello", QueueDeclareOptions::default(), FieldTable::default()).wait().expect("queue_declare");
54//!
55//!   info!("will consume");
56//!   channel_b.basic_consume(&queue, "my_consumer", BasicConsumeOptions::default(), FieldTable::default(), Box::new(Subscriber { channel: channel_b.clone() })).wait().expect("basic_consume");
57//!
58//!   let payload = b"Hello world!";
59//!
60//!   loop {
61//!     channel_a.basic_publish("", "hello", BasicPublishOptions::default(), payload.to_vec(), BasicProperties::default()).wait().expect("basic_publish");
62//!   }
63//! }
64//! ```
65
66#[deprecated(note = "use lapin instead")]
67pub use amq_protocol::{
68  protocol::{self, BasicProperties},
69  auth, tcp, types, uri,
70};
71
72#[deprecated(note = "use lapin instead")]
73pub use channel::{Channel, options};
74#[deprecated(note = "use lapin instead")]
75pub use channel_status::{ChannelState, ChannelStatus};
76#[deprecated(note = "use lapin instead")]
77pub use configuration::Configuration;
78#[deprecated(note = "use lapin instead")]
79pub use connection::{Connect, Connection};
80#[deprecated(note = "use lapin instead")]
81pub use connection_properties::ConnectionProperties;
82#[deprecated(note = "use lapin instead")]
83pub use connection_status::{ConnectionState, ConnectionStatus};
84#[deprecated(note = "use lapin instead")]
85pub use consumer::ConsumerSubscriber;
86#[deprecated(note = "use lapin instead")]
87pub use error::{Error, ErrorKind};
88#[deprecated(note = "use lapin instead")]
89pub use queue::Queue;
90
91#[deprecated(note = "use lapin instead")]
92pub mod confirmation;
93#[deprecated(note = "use lapin instead")]
94pub mod message;
95
96mod acknowledgement;
97mod buffer;
98mod channel;
99mod channel_status;
100mod channels;
101mod configuration;
102mod connection;
103mod connection_properties;
104mod connection_status;
105mod consumer;
106mod error;
107mod error_handler;
108mod frames;
109mod id_sequence;
110mod io_loop;
111mod queue;
112mod queues;
113mod registration;
114mod returned_messages;
115mod wait;