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::*;