问题域/PD-114

异步队列处理

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)确保无泄漏