Skip to main content

wae_queue/
services.rs

1//! 队列管理和服务实现
2
3use super::{WaeResult, consumers::MessageConsumer, producers::MessageProducer, types::*};
4
5/// 队列管理 trait
6#[async_trait::async_trait]
7pub trait QueueManager: Send + Sync {
8    /// 声明队列
9    async fn declare_queue(&self, config: &QueueConfig) -> WaeResult<()>;
10
11    /// 删除队列
12    async fn delete_queue(&self, name: &str) -> WaeResult<()>;
13
14    /// 检查队列是否存在
15    async fn queue_exists(&self, name: &str) -> WaeResult<bool>;
16
17    /// 获取队列消息数量
18    async fn queue_message_count(&self, name: &str) -> WaeResult<u64>;
19
20    /// 清空队列
21    async fn purge_queue(&self, name: &str) -> WaeResult<u64>;
22}
23
24/// 消息队列服务 trait
25
26pub trait QueueService: Send + Sync {
27    /// 创建生产者
28    async fn create_producer(&self, config: ProducerConfig) -> WaeResult<MessageProducer>;
29
30    /// 创建消费者
31    async fn create_consumer(&self, config: ConsumerConfig) -> WaeResult<MessageConsumer>;
32
33    /// 获取队列管理器
34    fn manager(&self) -> &dyn QueueManager;
35
36    /// 关闭连接
37    async fn close(&self) -> WaeResult<()>;
38}