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


