Deadpool for Lapin Latest Version Unsafe forbidden Rust 1.54+

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 | | ------- | ----------- | ------------------ | ------- | | 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 | | serde | Enable support for serde crate | deadpool/serde, serde/derive | no |

Example with tokio-amqp crate

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

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

[tokio::main]

async fn main() -> Result<(), Box> { let mut cfg = Config::default(); cfg.url = Some("amqp://127.0.0.1:5672/%2f".into()); let pool = cfg.createpool(Some(Runtime::Tokio1))?; for _ in 1..10 { 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 deadpoollapin::Runtime; use deadpoollapin::lapin::{ options::BasicPublishOptions, BasicProperties, }; use dotenv::dotenv;

use serde_1 as serde;

[derive(Debug, serde::Deserialize)]

#[serde(crate = "serde_1")]

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

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

[tokio::main]

async fn main() -> Result<(), Box> { dotenv().ok(); let mut cfg = Config::fromenv().unwrap(); let pool = cfg.amqp.createpool(Some(Runtime::Tokio1)).unwrap(); for _ in 1..10 { 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.