多渠道消息路由
Multi-Channel Message Routing
统一管理多个 IM 渠道的消息接收、路由、去重和分发
子问题
1.渠道注册与发现
2.消息队列与去重
3.渠道热替换
4.跨渠道消息格式适配
5.线程安全的跨线程消息入队
6.处理中消息的暂存与回填
7.渠道懒加载避免 CLI 拉入重依赖
各项目的解法1 solutions
Signals
横向对比
| 维度 | CoPaw |
|---|---|
| 渠道注册方式 | 内置字典 + importlib 动态扫描 custom_channels/ 目录 |
| 消息队列模型 | per-channel asyncio.Queue + 4 worker 并行消费 |
| 去重合并策略 | drain_same_key 批量排空 + in_progress/pending 双层暂存 |
| 热替换机制 | ConfigWatcher mtime 轮询 + replace_channel 先启后换 |
| 渠道数量 | 6 内置 (DingTalk/Feishu/Discord/QQ/iMessage/Console) + 插件 |
| 线程安全 | call_soon_threadsafe 跨线程入队 |
| 渲染适配 | MessageRenderer + RenderStyle 可插拔渲染器 |
最佳实践
1.基于注册表模式动态加载渠道插件
2.per-channel 独立队列 + 多 worker 避免渠道间互相阻塞
3.先启动新渠道再锁内交换实现零停机热替换
4.环境变量过滤可用渠道子集控制生产部署范围