Hazelcast 发布/订阅
该 HazelcastPubSubEventStore 为 socketio4j 提供分布式事件存储,使用 Hazelcast ITopic。 它通过在集群节点之间广播事件实现水平扩展,以便房间加入、离开、状态更改、确认和其他内部事件在多个服务器实例之间保持同步。
关键特性
分布式事件广播 —— 所有节点接收所有发布的事件
异步非阻塞分发 —— Hazelcast 在 Netty 事件循环之外管理传递
按事件的主题支持 —— 允许事件类型的多通道分离
简单集成 —— 使用核心 Hazelcast 功能,无需环形缓冲区配置
重复防止 —— 使用
nodeId过滤
工作原理
事件被发布到 Hazelcast ITopic 实例(根据模式可能是一个或多个)
每个订阅的服务器为事件传递注册 Hazelcast 消息监听器
本地监听器仅接收外部来源的事件(
nodeId不匹配)监听器注册按事件类型跟踪,以便实现受控的取消订阅和关闭
模式
MULTI_CHANNEL
每个事件类型映射到其自己的 Hazelcast 主题
默认;隔离事件流量
SINGLE_CHANNEL
所有事件路由到 ALL_SINGLE_CHANNEL
当需要跨类型顺序时
优点
👍 适用于多节点部署 👍 如果已使用 Hazelcast 进行集群,则无需额外的代理 👍 易于配置和集成 👍 干净的取消订阅和关闭处理 👍 适合已使用 Hazelcast 管理分布式状态的应用
限制
ℹ️ 除了 Hazelcast 主题缓冲外无消息持久化——重启时消息可能丢失 ℹ️ 顺序性是按主题的,而非跨所有事件类型的全局顺序 ℹ️ 无历史重放——监听器只能接收订阅之后的消息 ℹ️ 故障转移期间可能出现重复投递
传递保证: 至少一次语义——事件监听器必须具备幂等性以安全处理重复消息。
最后更新于
这有帮助吗?