Actor-RTC Mailbox Layer
Persistent mailbox layer for the Actor-RTC framework, backed by SQLite.
Core Features
- Message Persistence: Reliable message queue and mailbox storage
- Dead Letter Queue: Poison message isolation and manual intervention
Quick Start
use actr_runtime_mailbox::prelude::*;
use actr_protocol::{ActrId, Realm, ActrType};
use actr_protocol::prost::Message as ProstMessage;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mailbox = SqliteMailbox::new("./data/mailbox.db").await?;
let sender = ActrId {
realm: Realm { realm_id: 1 },
serial_number: 1000,
r#type: ActrType {
manufacturer: "example".to_string(),
name: "TestActor".to_string(),
version: "1.0.0".to_string(),
},
};
let mut from_bytes = Vec::new();
sender.encode(&mut from_bytes)?;
let message = b"Hello, World!".to_vec();
let message_id = mailbox.enqueue(from_bytes, message, MessagePriority::Normal).await?;
let messages = mailbox.dequeue().await?;
println!("Retrieved {} messages", messages.len());
if let Some(msg) = messages.first() {
mailbox.ack(msg.id).await?;
}
Ok(())
}