异步队列处理
Async Queue Processing
事件驱动消息队列、原子消息认领、空闲超时管理
子问题
1.原子 claim-confirm 防重复
2.持久化待处理消息
3.空闲超时自动终止子进程
4.EventEmitter 唤醒避免轮询
5.生产者-消费者速率不匹配的背压控制
6.子进程僵尸进程检测与收割
各项目的解法1 solutions
Signals
横向对比
| 维度 | claude-mem |
|---|---|
| 队列存储 | SQLite pending_messages 表,4 态状态机(pending/processing/processed/failed) |
| 消费模式 | async iterator + EventEmitter 唤醒,零轮询 |
| 防重复机制 | SQLite 事务内原子 claim(SELECT+UPDATE),单消费者模型 |
| 自愈策略 | claimNextMessage 内置 60s stale 检测,无需外部 watchdog |
| 空闲管理 | 3 分钟无消息触发 onIdleTimeout → AbortController.abort() 终止子进程 |
| 进程生命周期 | ProcessRegistry PID 追踪 + ensureProcessExit 两阶段终止 + 5 分钟孤儿收割 |
最佳实践
1.用 async iterator 模式消费队列,结合 AbortSignal 实现优雅取消
2.claim 事务内嵌入自愈逻辑,无需独立 watchdog 线程
3.waitForMessage 三路竞争(event/abort/timeout)确保无泄漏