[][src]Crate lapin

lapin

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

Example

use env_logger;
use log::info;

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

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

impl ConsumerDelegate for Subscriber {
  fn on_new_delivery(&self, delivery: DeliveryResult) {
    if let Ok(Some(delivery)) = delivery {
      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");

  channel_a.queue_declare("hello", QueueDeclareOptions::default(), FieldTable::default()).wait().expect("queue_declare");
  let queue = channel_b.queue_declare("hello", QueueDeclareOptions::default(), FieldTable::default()).wait().expect("queue_declare");

  info!("will consume");
  channel_b.clone().basic_consume(&queue, "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;

Modules

auth

Utility to handle SASL authentication with AMQP server

confirmation
executor
message
options
protocol

The AMQ Protocol implementation (Generated)

Structs

Channel
ChannelStatus
Configuration
Connection
ConnectionProperties
ConnectionStatus
Consumer
Queue

Enums

ChannelState
ConnectionState
Error

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

Traits

Connect

Trait providing a method to connect to an AMQP server

ConsumerDelegate

Type Definitions

BasicProperties

Type alias for AMQP BasicProperties

Result

A std Result with a lapin::Error error type