1use super::{WaeResult, consumers::MessageConsumer, producers::MessageProducer, types::*};
4
5#[async_trait::async_trait]
7pub trait QueueManager: Send + Sync {
8 async fn declare_queue(&self, config: &QueueConfig) -> WaeResult<()>;
10
11 async fn delete_queue(&self, name: &str) -> WaeResult<()>;
13
14 async fn queue_exists(&self, name: &str) -> WaeResult<bool>;
16
17 async fn queue_message_count(&self, name: &str) -> WaeResult<u64>;
19
20 async fn purge_queue(&self, name: &str) -> WaeResult<u64>;
22}
23
24pub trait QueueService: Send + Sync {
27 async fn create_producer(&self, config: ProducerConfig) -> WaeResult<MessageProducer>;
29
30 async fn create_consumer(&self, config: ConsumerConfig) -> WaeResult<MessageConsumer>;
32
33 fn manager(&self) -> &dyn QueueManager;
35
36 async fn close(&self) -> WaeResult<()>;
38}