actr_mailbox/
lib.rs

1//! # Actor-RTC Mailbox Layer
2//!
3//! 🗄️ Actor-RTC 框架的持久化邮箱层,由 SQLite 支持。
4//!
5//! ## 核心功能
6//!
7//! - **消息持久化**: 可靠的消息队列和邮箱存储
8//! - **Dead Letter Queue**: 毒消息隔离和人工干预
9//!
10//! ## 快速开始
11//!
12//! ```rust,no_run
13//! use actr_mailbox::prelude::*;
14//! use actr_protocol::{ActrId, Realm, ActrType};
15//! use actr_protocol::prost::Message as ProstMessage;
16//!
17//! #[tokio::main]
18//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
19//!     // 创建 SQLite 邮箱存储
20//!     let mailbox = SqliteMailbox::new("./data/mailbox.db").await?;
21//!
22//!     // 创建发送者 ActrId 并序列化
23//!     let sender = ActrId {
24//!         realm: Realm { realm_id: 1 },
25//!         serial_number: 1000,
26//!         r#type: ActrType {
27//!             manufacturer: "example".to_string(),
28//!             name: "TestActor".to_string(),
29//!         },
30//!     };
31//!     let mut from_bytes = Vec::new();
32//!     sender.encode(&mut from_bytes)?;
33//!
34//!     let message = b"Hello, World!".to_vec();
35//!
36//!     // 入队消息(from 为发送方 ActrId 的 Protobuf bytes)
37//!     let message_id = mailbox.enqueue(from_bytes, message, MessagePriority::Normal).await?;
38//!
39//!     // 出队消息
40//!     let messages = mailbox.dequeue().await?;
41//!     println!("Retrieved {} messages", messages.len());
42//!
43//!     // 确认消息
44//!     if let Some(msg) = messages.first() {
45//!         mailbox.ack(msg.id).await?;
46//!     }
47//!
48//!     Ok(())
49//! }
50//! ```
51
52pub mod error;
53pub mod mailbox;
54pub mod sqlite;
55
56// Dead Letter Queue modules
57pub mod dlq;
58pub mod sqlite_dlq;
59
60// 重新导出核心类型
61pub use actr_protocol::{ActrError, ActrId};
62
63// 存储层核心接口
64pub use error::{StorageError, StorageResult};
65pub use mailbox::{Mailbox, MailboxStats, MessagePriority, MessageRecord, MessageStatus};
66
67// DLQ 核心接口
68pub use dlq::{DeadLetterQueue, DlqQuery, DlqRecord, DlqStats};
69
70// 后端实现
71pub use sqlite::{SqliteConfig, SqliteMailbox};
72pub use sqlite_dlq::SqliteDeadLetterQueue;
73
74pub mod prelude {
75    //! 邮箱层常用类型和 trait 的便利导入
76
77    pub use crate::error::{StorageError, StorageResult};
78    pub use crate::mailbox::{
79        Mailbox, MailboxStats, MessagePriority, MessageRecord, MessageStatus,
80    };
81    pub use crate::sqlite::{SqliteConfig, SqliteMailbox};
82
83    // Dead Letter Queue
84    pub use crate::dlq::{DeadLetterQueue, DlqQuery, DlqRecord, DlqStats};
85    pub use crate::sqlite_dlq::SqliteDeadLetterQueue;
86
87    // 基础类型
88    pub use actr_protocol::{ActrError, ActrId};
89
90    // 异步 trait 支持
91    pub use async_trait::async_trait;
92
93    // 常用工具
94    pub use anyhow::{Context as AnyhowContext, Result as AnyhowResult};
95    pub use chrono::{DateTime, Utc};
96    pub use uuid::Uuid;
97}