actr-runtime-mailbox 0.2.1

Persistent mailbox layer for the Actor-RTC framework, backed by SQLite.
Documentation
# actr-mailbox

๐Ÿ—„๏ธ **Actor-RTC ๆŒไน…ๅŒ–้‚ฎ็ฎฑๅฑ‚**

`actr-mailbox` ๆไพ› Actor-RTC ๆก†ๆžถ็š„ๆถˆๆฏๆŒไน…ๅŒ–ๅŠŸ่ƒฝ๏ผŒๅŸบไบŽ SQLite ๅฎž็Žฐ๏ผŒ็กฎไฟๆถˆๆฏ็š„ๅฏ้ ๅญ˜ๅ‚จๅ’Œๆฃ€็ดขใ€‚

## ๐Ÿ“ฆ ๅŠŸ่ƒฝ็‰นๆ€ง

- **ๆถˆๆฏๆŒไน…ๅŒ–**: ๅฏ้ ็š„ๆถˆๆฏ้˜Ÿๅˆ—ๅ’Œ้‚ฎ็ฎฑๅญ˜ๅ‚จ๏ผŒๅŸบไบŽ SQLiteใ€‚
- **ไผ˜ๅ…ˆ็บง้˜Ÿๅˆ—**: ๆ”ฏๆŒ้ซ˜ใ€ๆ™ฎ้€šไธค็งไผ˜ๅ…ˆ็บง็š„ๆถˆๆฏใ€‚
- **ACID ไฟ่ฏ**: ๅˆฉ็”จ SQLite ไบ‹ๅŠก็กฎไฟๆถˆๆฏๆ“ไฝœ็š„ๅŽŸๅญๆ€งใ€‚

## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

ๅœจ `Cargo.toml` ไธญๆทปๅŠ ไพ่ต–๏ผš

```toml
[dependencies]
actr-mailbox = { path = "path/to/actr-mailbox" }
```

### ๅŸบๆœฌไฝฟ็”จ

```rust,no_run
use actr_mailbox::prelude::*;
use std::time::Duration;

async fn message_processor(mailbox: impl Mailbox) {
    loop {
        // 1. ไปŽ้˜Ÿๅˆ—ไธญ่Žทๅ–ไธ€ๆ‰นๆถˆๆฏ
        //    ๆญคๆ“ไฝœไผš่‡ชๅŠจๅค„็†ไผ˜ๅ…ˆ็บง๏ผŒๅนถๅฐ†ๆถˆๆฏๆ ‡่ฎฐไธบโ€œๅค„็†ไธญโ€
        match mailbox.dequeue().await {
            Ok(messages) => {
                if messages.is_empty() {
                    tokio::time::sleep(Duration::from_secs(1)).await;
                    continue;
                }

                println!("ๅค„็† {} ๆกๆถˆๆฏ...", messages.len());
                for msg in messages {
                    // 2. ๅœจ่ฟ™้‡Œๆ‰ง่กŒไฝ ็š„ไธšๅŠก้€ป่พ‘
                    //    ไพ‹ๅฆ‚: process_data(msg.payload).await;
                    
                    // 3. ๆˆๅŠŸๅค„็†ๅŽ๏ผŒ็กฎ่ฎคๆถˆๆฏ๏ผŒๅฐ†ๅ…ถไปŽ้˜Ÿๅˆ—ๆฐธไน…ๅˆ ้™ค
                    if let Err(e) = mailbox.ack(msg.id).await {
                        eprintln!("ๆถˆๆฏ {} ็กฎ่ฎคๅคฑ่ดฅ: {}", msg.id, e);
                    }
                }
            }
            Err(e) => {
                eprintln!("ไปŽ้˜Ÿๅˆ—ๆ‹‰ๅ–ๆถˆๆฏๅคฑ่ดฅ: {}", e);
                tokio::time::sleep(Duration::from_secs(5)).await;
            }
        }
    }
}
```

## ๐Ÿ—๏ธ ๆžถๆž„ๅฑ‚ๆฌก

```text
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              actr-core                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  actr-sdk  โ”‚  actr-mailbox โ”‚ actr-runtimeโ”‚ (ๆญคๅฑ‚)
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  actr-protocol โ”‚    actr-version         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  actr-types    โ”‚     actr-uri           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

## ๐Ÿ“„ ่ฎธๅฏ่ฏ

MIT License