#连接池 #异步池 #rabbitmq #lapin #amqp # #异步

deadpool-lapin

Deadpool为lapin提供的简单异步池

13个版本 (8个破坏性更新)

0.12.1 2024年5月4日
0.12.0 2024年3月31日
0.11.0 2023年9月26日
0.10.0 2022年2月23日
0.0.0 2019年12月3日

#650 in 异步

Download history 3375/week @ 2024-04-22 2682/week @ 2024-04-29 1132/week @ 2024-05-06 2093/week @ 2024-05-13 2081/week @ 2024-05-20 1866/week @ 2024-05-27 2143/week @ 2024-06-03 1835/week @ 2024-06-10 1164/week @ 2024-06-17 934/week @ 2024-06-24 1434/week @ 2024-07-01 1419/week @ 2024-07-08 1225/week @ 2024-07-15 896/week @ 2024-07-22 1646/week @ 2024-07-29 1522/week @ 2024-08-05

每月5,324次下载
4 crates 中使用

MIT/Apache

86KB
1.5K SLoC

Deadpool是一个简单的异步连接和任何类型对象的池。

此crate实现了deadpool管理器,用于lapin

功能

功能

描述 额外依赖 默认 rt_tokio_1
启用对tokio crate的支持 deadpool /启用对tokio crate的支持 rt_async-std_1
启用对async-std crate的支持 rt_async /std_1- serde
启用对serde crate的支持 deadpool/serde, serde/derive 使用tokio-amqp crate的示例 serde

使用configdotenvytokio-amqp crate的示例

use std::sync::Arc;

use deadpool_lapin::{Config, Manager, Pool, Runtime};
use deadpool_lapin::lapin::{
    options::BasicPublishOptions,
    BasicProperties,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut cfg = Config::default();
    cfg.url = Some("amqp://127.0.0.1:5672/%2f".into());
    let pool = cfg.create_pool(Some(Runtime::Tokio1))?;
    for _ in 1..10 {
        let mut connection = pool.get().await?;
        let channel = connection.create_channel().await?;
        channel.basic_publish(
            "",
            "hello",
            BasicPublishOptions::default(),
            b"hello from deadpool",
            BasicProperties::default(),
        ).await?;
    }
    Ok(())
}

许可

use std::sync::Arc;

use deadpool_lapin::Runtime;
use deadpool_lapin::lapin::{
    options::BasicPublishOptions,
    BasicProperties,
};
use dotenvy::dotenv;

#[derive(Debug, serde::Deserialize)]
struct Config {
    #[serde(default)]
    amqp: deadpool_lapin::Config
}

impl Config {
    pub fn from_env() -> Result<Self, config::ConfigError> {
         config::Config::builder()
            .add_source(config::Environment::default().separator("__"))
            .build()?
            .try_deserialize()
    }
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotenv().ok();
    let mut cfg = Config::from_env().unwrap();
    let pool = cfg.amqp.create_pool(Some(Runtime::Tokio1)).unwrap();
    for _ in 1..10 {
        let mut connection = pool.get().await?;
        let channel = connection.create_channel().await?;
        channel.basic_publish(
            "",
            "hello",
            BasicPublishOptions::default(),
            b"hello from deadpool",
            BasicProperties::default(),
        ).await?;
    }
    Ok(())
}

许可

根据您的选择,受以下任一许可的约束:

依赖关系

~9–21MB
~317K SLoC