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 | | rt_tokio_1 | Enable support for tokio crate | deadpool/rt_tokio_1 | yes | | rt_async-std_1 | Enable support for async-std crate | deadpool/rt_async-std_1 | no |

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.pool.getorinsertwith(Default::default).runtime = deadpool::Runtime::Tokio1; 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".tovec(), BasicProperties::default() ).await?; } Ok(()) } ```

Example with config, dotenv and tokio-amqp crate

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

use deadpool_lapin::lapin::{ options::BasicPublishOptions, BasicProperties }; use dotenv::dotenv; use serde::Deserialize;

[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.pool.getorinsertwith(Default::default).runtime = deadpool::Runtime::Tokio1; 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".tovec(), BasicProperties::default() ).await?; } Ok(()) } ```

License

Licensed under either of

at your option.