0.10.0 |
|
---|
#21 in #lapin
85KB
1.5K SLoC
Deadpool 是一个用于任何类型连接和对象的简单异步池。
Deadpool 是一个简单的异步连接和对象池。
此包实现了一个 deadpool
管理器,用于 lapin
.
功能
功能 | 描述 | 额外依赖 | 默认 |
---|---|---|---|
rt_tokio_1 |
启用对 tokio 包的支持 | deadpool/rt_tokio_1 |
是 |
rt_async-std_1 |
启用对 async-std 包的支持 | deadpool/rt_async-std_1 |
否 |
serde |
启用对 serde 包的支持 | deadpool/serde , serde/derive |
否 |
使用 tokio-amqp
包的示例
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(())
}
使用 config
、dotenv
和 tokio-amqp
包的示例
use std::sync::Arc;
use deadpool_lapin::Runtime;
use deadpool_lapin::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 from_env() -> Result<Self, config::ConfigError> {
let mut cfg = config::Config::new();
cfg.merge(config::Environment::new().separator("__"))?;
cfg.try_into()
}
}
#[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(())
}
许可证
根据您的要求,许可协议为
- Apache 许可证 2.0(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0》)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT》)
任选其一。
依赖关系
~9–21MB
~325K SLoC