问题域/PD-491

多渠道消息路由

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.环境变量过滤可用渠道子集控制生产部署范围