4个版本
0.1.5 | 2024年6月10日 |
---|---|
0.1.4 | 2024年6月9日 |
0.1.3 | 2024年3月24日 |
0.1.1 |
|
0.1.0 |
|
#1331 in 异步
每月468次下载
12KB
279 代码行
Alicemq_amqprs
这是对官方AMQPRS库的一个简单的包装器/适配器实现
查看项目: https://github.com/gftea/amqprs
这是一个有趣的学习项目,也是将我的Rustlang当前知识付诸实践的方式。
要使用该库,您必须首先创建事件队列及其特定的处理程序。每个处理程序都必须是一个只接收类型 String
的函数。
本地运行RabbitMQ
要运行RabbitMQ的本地实例,请使用以下命令
rabbitmq-server
要创建智能发布者/订阅者,请首先导入所需的类型。
use tracing::{debug, Level};
use alicemq::clients::consumer_client::ConsumerManager;
use alicemq::consumers::base_consumer::BaseConsumer;
use tracing_subscriber::FmtSubscriber;
实现自定义消费者处理程序。
目前支持非阻塞异步消费者。要定义处理程序,请遵循以下结构
async fn my_callback(data: Vec<u8>) {
debug!("Received data: {:?}", String::from_utf8(data));
}
fn set_tracing_subscriber() {
let subscriber = FmtSubscriber::builder()
.with_max_level(Level::TRACE)
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("setting default subscriber failed");
}
创建智能长生存期消费者
要创建消费者,请使用消费者管理器,并定义它是否为长生存期。定义队列及其相应的回调处理程序。
#[tokio::main]
async fn main() {
let _ = set_tracing_subscriber();
let mut _manager: ConsumerManager = ConsumerManager::new_instance()
.connect().await;
_manager.set_queue("test_queue", BaseConsumer::new(my_callback), None).await;
_manager.set_queue("another_test_queue", BaseConsumer::new(my_callback), None).await;
_manager.run(true).await;
}
要创建智能发布者,只需创建智能发布者的实例。支持传递的数据,仅限字符串。
创建智能发布者
use tracing::Level;
use tracing_subscriber::FmtSubscriber;
use alicemq::clients::publisher_client::Publisher;
fn set_tracing_subscriber() {
let subscriber = FmtSubscriber::builder()
.with_max_level(Level::TRACE)
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("setting default subscriber failed");
}
#[tokio::main]
async fn main() {
let _ = set_tracing_subscriber();
for i in 1..10 {
let _ = Publisher::send_message(
format!("This message contains the id {}", i), String::from("test_queue")
).await;
}
}
运行示例
要运行文件夹中的任何示例,请运行以下命令
cargo run --example my_example
依赖项
~9–19MB
~240K SLoC