list-timelineKafka/AutoMQ

KafkaEventStore 提供了一个 分布式的、流式的事件存储 用于 socketio4j,基于 Apache Kafka。 它实现了 横向扩展 通过在所有服务器实例之间广播事件,使事件消息、房间加入、离开及其他内部事件在各节点间同步。

关键特性

  • 分布式且容错 — 事件被持久化到 Kafka 并传递到每个活跃节点

  • 异步且非阻塞发布 — 避免阻塞 Netty 事件循环

  • 事件重放边界 — 开始消费自 最新 仅消息(不重放历史)

  • 流式广播语义 — 每个节点接收 所有事件,而非负载均衡的消息

  • 重复防止 — 跳过来自同一节点的事件(nodeId 过滤)

工作原理

  • 每次发布都会将事件存储到 Kafka 主题(单一主题或按类型分主题,取决于模式)

  • 每个订阅的事件类型由专用守护线程轮询

  • 只有当消息 来自不同节点时,才会传递给本地监听器

  • 损坏的(“毒丸”)记录将被跳过以保持消费继续进行

模式

模式
行为
何时使用

MULTI_CHANNEL

每种事件类型拥有自己的 Kafka 主题

默认;并行性与隔离

SINGLE_CHANNEL

所有事件路由到 ALL_SINGLE_CHANNEL

当需要跨所有事件类型的全局顺序时

优点

  • 👍 适用于多节点部署

  • 👍 在服务器之间同步 socketio4j 事件

  • 👍 安全关闭与监听器清理

  • 👍 对 Netty 线程无反压

限制

  • ℹ️ 不是点对点队列 — 始终为广播式

  • ℹ️ 无历史重放 — 仅从最新偏移消费

  • ℹ️ 需要 Kafka 集群可用

传递保证: 至少一次语义 — 可能会发生重复投递;监听器应具备幂等性。

最后更新于

这有帮助吗?