dmsc/queue/
mod.rs

1//! Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
2//!
3//! This file is part of DMSC.
4//! The DMSC project belongs to the Dunimd Team.
5//!
6//! Licensed under the Apache License, Version 2.0 (the "License");
7//! You may not use this file except in compliance with the License.
8//! You may obtain a copy of the License at
9//!
10//!     http://www.apache.org/licenses/LICENSE-2.0
11//!
12//! Unless required by applicable law or agreed to in writing, software
13//! distributed under the License is distributed on an "AS IS" BASIS,
14//! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15//! See the License for the specific language governing permissions and
16//! limitations under the License.
17
18//! # Queue Module
19//! 
20//! This module provides a comprehensive queueing system for DMSC, offering a unified interface
21//! with support for multiple backend implementations. It enables reliable message passing and
22//! task scheduling across distributed systems.
23//! 
24//! ## Key Components
25//! 
26//! - **DMSCQueueModule**: Main queue module implementing service module traits
27//! - **DMSCQueueManager**: Central queue management component
28//! - **DMSCQueue**: Unified queue interface implemented by all backends
29//! - **DMSCQueueConfig**: Configuration for queue behavior
30//! - **DMSCQueueMessage**: Message structure for queue operations
31//! - **DMSCQueueConsumer**: Interface for consuming messages from queues
32//! - **DMSCQueueProducer**: Interface for producing messages to queues
33//! - **DMSCQueueBackendType**: Enum defining supported queue backends
34//! - **DMSCQueueStats**: Statistics for queue monitoring
35//! 
36//! ## Design Principles
37//! 
38//! 1. **Unified Interface**: Consistent API across all backend implementations
39//! 2. **Multiple Backends**: Support for different queue storage options
40//! 3. **Async Support**: Full async/await compatibility
41//! 4. **Reliable Delivery**: Ensures messages are delivered reliably
42//! 5. **Configurable**: Highly configurable queue behavior
43//! 6. **Service Module Integration**: Implements service module traits for seamless integration
44//! 7. **Thread-safe**: Safe for concurrent use across multiple threads
45//! 8. **Statistics Collection**: Built-in queue statistics for monitoring
46//! 
47//! ## Usage
48//! 
49//! ```rust
50//! use dmsc::prelude::*;
51//! use serde::{Serialize, Deserialize};
52//! 
53//! #[derive(Debug, Serialize, Deserialize)]
54//! struct Task {
55//!     id: String,
56//!     data: String,
57//! }
58//! 
59//! async fn example() -> DMSCResult<()> {
60//!     // Create queue configuration
61//!     let queue_config = DMSCQueueConfig {
62//!         enabled: true,
63//!         backend_type: DMSCQueueBackendType::Memory,
64//!         default_queue_name: "default".to_string(),
65//!         max_retry_count: 3,
66//!         retry_delay_ms: 1000,
67//!         queue_url: "".to_string(), // Not needed for memory backend
68//!     };
69//!     
70//!     // Create queue module
71//!     let queue_module = DMSCQueueModule::new(queue_config);
72//!     
73//!     // Get queue manager
74//!     let queue_manager = queue_module.queue_manager();
75//!     
76//!     // Get queue instance
77//!     let queue = queue_manager.read().await.queue("example_queue").await?;
78//!     
79//!     // Create producer and consumer
80//!     let producer = queue.producer().await?;
81//!     let consumer = queue.consumer().await?;
82//!     
83//!     // Create a task message
84//!     let task = Task {
85//!         id: "task-123".to_string(),
86//!         data: "Hello, DMSC Queue!".to_string(),
87//!     };
88//!     
89//!     // Send message to queue
90//!     let message_id = producer.send(&task).await?;
91//!     println!("Sent message with ID: {}", message_id);
92//!     
93//!     // Receive message from queue
94//!     if let Some(message) = consumer.receive().await? {
95//!         let received_task: Task = message.deserialize()?;
96//!         println!("Received task: {:?}", received_task);
97//!         
98//!         // Acknowledge message
99//!         message.ack().await?;
100//!     }
101//!     
102//!     Ok(())
103//! }
104//! ```
105
106mod core;
107pub mod backends;
108mod config;
109mod manager;
110
111pub use core::{DMSCQueue, DMSCQueueMessage, DMSCQueueProducer, DMSCQueueConsumer, DMSCQueueStats, DMSCQueueError};
112pub use config::{DMSCQueueConfig, DMSCQueueBackendType, DMSCRetryPolicy, DMSCDeadLetterConfig};
113pub use manager::{DMSCQueueManager, DMSCQueueModule};
114pub use backends::*;