Deadpool for Lapin Latest Version

Deadpool is a dead simple async pool for connections and objects of any type.

This crate implements a deadpool manager for lapin.

Features

| Feature | Description | Extra dependencies | Default | | ------- | ----------- | ------------------ | ------- | | config | Enable support for config crate | config, serde/derive | yes |

Example with tokio-amqp crate

```rust,ignore use std::sync::Arc;

use deadpoollapin::{Config, Manager, Pool }; use deadpoollapin::lapin::{ options::BasicPublishOptions, BasicProperties }; use tokio::runtime::Runtime; use tokio_amqp::LapinTokioExt;

[tokio::main]

async fn main() -> Result<(), Box> { let mut cfg = Config::default(); cfg.url = Some("amqp://127.0.0.1:5672/%2f".tostring()); cfg.connectionproperties = lapin::ConnectionProperties::default() .withtokio(); let pool = cfg.createpool(); for i in 1..10usize { let mut connection = pool.get().await?; let channel = connection.createchannel().await?; channel.basicpublish( "", "hello", BasicPublishOptions::default(), b"hello from deadpool".to_vec(), BasicProperties::default() ).await?; } Ok(()) } ```

Example with config, dotenv and tokio-amqp crate

```rust use std::sync::Arc;

use deadpoollapin::lapin::{ options::BasicPublishOptions, BasicProperties }; use dotenv::dotenv; use serde::Deserialize; use tokioamqp::LapinTokioExt;

[derive(Debug, Deserialize)]

struct Config { #[serde(default)] amqp: deadpool_lapin::Config }

impl Config { pub fn fromenv() -> Result { let mut cfg = ::configcrate::Config::new(); cfg.merge(::configcrate::Environment::new().separator(""))?; cfg.tryinto() } }

[tokio::main]

async fn main() -> Result<(), Box> { dotenv().ok(); let mut cfg = Config::fromenv().unwrap(); cfg.amqp.connectionproperties = lapin::ConnectionProperties::default() .withtokio(); let pool = cfg.amqp.createpool(); for i in 1..10usize { let mut connection = pool.get().await?; let channel = connection.createchannel().await?; channel.basicpublish( "", "hello", BasicPublishOptions::default(), b"hello from deadpool".to_vec(), BasicProperties::default() ).await?; } Ok(()) } ```

License

Licensed under either of

at your option.