事件存储
该 EventStore interface 定义了 socketio4j 的分布式事件同步层。 它为在一个或多个服务器实例之间发布和订阅内部事件(例如加入房间、离开、确认、会话更改和节点间同步)提供了统一的抽象。
关键特性
统一的事件 API — 对所有后端使用相同的发布/订阅模型
类型化分发 — 监听器接收强类型的
EventMessage对象节点感知过滤 — 实现通常通过忽略自发起事件来避免重复处理
nodeId可插拔传输 — Kafka、Redis Streams、Hazelcast、NATS、内存回退等。
生命周期控制 — 标准化的
发布,订阅,取消订阅,关闭
工作原理
发布→ 通过后端特定的发送实现publish0订阅→ 通过 注册事件监听器subscribe0取消订阅→ 通过 移除监听器并清理unsubscribe0关闭→ 通过 释放后端资源shutdown0实现通过 方法提供传输行为;该接口对流程和错误处理进行标准化
*0方法;该接口对流程和错误处理进行标准化
事件路由属性
EventStoreMode
MULTI_CHANNEL (每事件的流/主题)或 SINGLE_CHANNEL (统一通道)
EventStoreType
声明传输类别: STREAM, PUBSUB, LOCAL,等。
PublishMode
描述期望的可靠性: RELIABLE 或 UNRELIABLE
nodeId
标识节点;用于避免重新处理本地事件
注意:
getNodeId()默认提供一个随机 ID。 对于分布式部署,请配置一个 稳定的节点标识 通过StoreFactory.
优点
👍 在不更改代码的情况下切换分布式传输 👍 集中错误记录和流程语义 👍 为自定义后端提供明确的扩展钩子 👍 抽象处理传输差异
限制
ℹ️ 交付保证取决于实现 — 接口不强制执行
ℹ️ 持久性、排序、去重是后端的责任
ℹ️ nodeId基于 的本地过滤必须被遵守以避免重复
交付保证
该 EventStore 接口未定义交付保证。 可靠性、重放和排序完全取决于所选后端(例如,Redis Streams = 至少一次;Redis Pub/Sub = 尽力而为;Kafka = 至少一次;内存 = 仅限本地)。
最后更新于
这有帮助吗?