Kafka/AutoMQ
该 KafkaEventStore 提供了一个 分布式的、流式的事件存储 用于 socketio4j,基于 Apache Kafka。 它实现了 横向扩展 通过在所有服务器实例之间广播事件,使事件消息、房间加入、离开及其他内部事件在各节点间同步。
关键特性
分布式且容错 — 事件被持久化到 Kafka 并传递到每个活跃节点
异步且非阻塞发布 — 避免阻塞 Netty 事件循环
事件重放边界 — 开始消费自 最新 仅消息(不重放历史)
流式广播语义 — 每个节点接收 所有事件,而非负载均衡的消息
重复防止 — 跳过来自同一节点的事件(
nodeId过滤)
工作原理
每次发布都会将事件存储到 Kafka 主题(单一主题或按类型分主题,取决于模式)
每个订阅的事件类型由专用守护线程轮询
只有当消息 来自不同节点时,才会传递给本地监听器
损坏的(“毒丸”)记录将被跳过以保持消费继续进行
模式
模式
行为
何时使用
MULTI_CHANNEL
每种事件类型拥有自己的 Kafka 主题
默认;并行性与隔离
SINGLE_CHANNEL
所有事件路由到 ALL_SINGLE_CHANNEL
当需要跨所有事件类型的全局顺序时
优点
👍 适用于多节点部署
👍 在服务器之间同步 socketio4j 事件
👍 安全关闭与监听器清理
👍 对 Netty 线程无反压
限制
ℹ️ 不是点对点队列 — 始终为广播式
ℹ️ 无历史重放 — 仅从最新偏移消费
ℹ️ 需要 Kafka 集群可用
传递保证: 至少一次语义 — 可能会发生重复投递;监听器应具备幂等性。
最后更新于
这有帮助吗?