[][src]Crate lapin

lapin

This project follows the AMQP 0.9.1 specifications, targetting especially RabbitMQ.

Example

use crate::lapin::{
  BasicProperties, Channel, Connection, ConnectionProperties, ConsumerDelegate,
  message::DeliveryResult,
  options::*,
  types::FieldTable,
};
use log::info;

#[derive(Clone,Debug)]
struct Subscriber {
  channel: Channel,
}

impl ConsumerDelegate for Subscriber {
  fn on_new_delivery(&self, delivery: DeliveryResult) {
    if let Some(delivery) = delivery.unwrap() {
      self.channel.basic_ack(delivery.delivery_tag, BasicAckOptions::default()).wait().expect("basic_ack");
    }
  }
}

fn main() {
  env_logger::init();

  let addr = std::env::var("AMQP_ADDR").unwrap_or_else(|_| "amqp://127.0.0.1:5672/%2f".into());
  let conn = Connection::connect(&addr, ConnectionProperties::default()).wait().expect("connection error");

  info!("CONNECTED");

  let channel_a = conn.create_channel().wait().expect("create_channel");
  let channel_b = conn.create_channel().wait().expect("create_channel");

  let queue = channel_a.queue_declare("hello", QueueDeclareOptions::default(), FieldTable::default()).wait().expect("queue_declare");
  info!("Declared queue {:?}", queue);

  info!("will consume");
  channel_b.clone().basic_consume("hello", "my_consumer", BasicConsumeOptions::default(), FieldTable::default()).wait().expect("basic_consume").set_delegate(Box::new(Subscriber { channel: channel_b }));

  let payload = b"Hello world!";

  loop {
    channel_a.basic_publish("", "hello", BasicPublishOptions::default(), payload.to_vec(), BasicProperties::default()).wait().expect("basic_publish");
  }
}

Re-exports

pub use amq_protocol::tcp;
pub use amq_protocol::types;
pub use amq_protocol::uri;
pub use pinky_swear;

Modules

auth

Utility to handle SASL authentication with AMQP server

executor
message
options
protocol

The AMQ Protocol implementation (Generated)

Structs

Channel
ChannelStatus
Configuration
Connection
ConnectionProperties
ConnectionStatus
Consumer
ConsumerIterator
Queue

Enums

ChannelState
ConnectionState
Error

The type of error that can be returned in this crate.

ExchangeKind

Traits

Connect

Trait providing a method to connect to an AMQP server

ConsumerDelegate

Type Definitions

BasicProperties

Type alias for AMQP BasicProperties

ConnectionPromise
Result

A std Result with a lapin::Error error type