说明:
- 持久化: 使用BadgerDB作为嵌入式持久化存储。每个事件在发布时都会被序列化(JSON)并存储到DB中,键为
event:<event_id>
。 - 恢复:
recoverFromDB
在系统启动时运行,遍历DB中所有事件,重新发布到内部publishChan
,实现故障恢复。 - 至少一次语义: 事件在持久化成功后才被分发给订阅者。如果进程在分发后、处理前崩溃,重启后事件会被恢复并重新分发,保证至少被处理一次。
- 确认机制:
AckEvent
方法供下游(如Sink)在成功处理事件后调用,从DB中删除事件,避免重复处理。这需要下游组件配合。 - 路由: 示例中简化了路由,直接按
Event.Type
分发。实际应支持更灵活的规则(如基于内容)。 - 背压处理: 当订阅者Channel满时,示例中简单丢弃事件。生产环境需要更健壮的背压处理策略(如阻塞发布者、降低Source接收速率)。
5.3.2 处理器流水线