rRedis 发布/订阅

circle-info

SocketIO4J 使用 Redisson 客户端连接到 Redis 服务器。也可能支持诸如 Valkey 和 DragonflyDB 等兼容 Redis 的替代后端。

RedissonPubSubEventStore 为 socketio4j 提供一个使用的事件存储 Redis Pub/Sub。 它通过在 Redis 通道上广播消息实现服务器实例之间的基本事件转发,允许分布式房间操作和内部同步 —— 但不保证持久化或重放。

主要特性

  • 短暂的广播消息传递 — 事件仅传递给当前连接的订阅者

  • 异步监听回调 — Redis Pub/Sub 分发在 Netty 事件循环之外运行

  • 轻量级多节点同步 — 当已存在 Redis 时仅需最小配置

  • 按事件主题路由 — 事件类型直接映射到 Pub/Sub 通道

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

工作原理

  • publish0 将事件根据事件类型发送到 Redis Pub/Sub 通道

  • subscribe0 在对应通道上注册类型安全的监听器

  • 交付为 仅推送 — 订阅者必须在线才能接收消息

  • 在取消订阅或关机时,主题监听器会被移除,但 Redis 客户端保持打开

模式

模式
行为
何时使用

MULTI_CHANNEL

每个事件映射到其各自的 Pub/Sub 通道

默认;减少事件串扰

SINGLE_CHANNEL

所有事件路由到 ALL_SINGLE_CHANNEL

当需要对所有事件类型进行完全排序时

优点

👍 配置极为简单 👍 零持久化开销 —— 纯广播语义 👍 非常适合以 Redis 为中心的部署或原型 👍 对于基本的多节点通信开箱即用

限制

ℹ️ 事件为 不持久化 — 订阅者在断连期间会错过事件 ℹ️ 无重放机制 —— 重新连接的节点从“现在”开始 ℹ️ 重新连接期间可能出现重复消息 ℹ️ 排序仅适用于每个通道;全局排序需要 SINGLE_CHANNEL 模式

交付保证: 最多一次(At-most-once)语义。 尽力而为、短暂的传递 —— 监听器必须容忍消息丢失和乱序传递。

最后更新于

这有帮助吗?