NATS 发布/订阅
该 NatsEventStore 为 socketio4j 提供一个使用的事件存储 NATS 核心 发布/订阅。 它通过广播消息实现多个服务器实例之间的事件同步,但事件是 短暂的且不持久化,因此适用于不需要持久重放的轻量级、低延迟部署。
关键特性
低延迟广播 — NATS Core 将消息快速传递到所有已连接节点
短暂事件 — 消息不被存储;订阅者只有在在线时才能接收事件
异步且非阻塞 — 调度器在 Netty 事件循环之外运行
按事件主题路由 — 事件类型直接映射到主题
重复防止 — 来自同一节点的事件通过
nodeId
工作原理
publish0对事件进行序列化并将其发送到 NATS 主题subscribe0注册一个监听相关主题的调度器消息被传递给监听器 仅当它们来自不同节点时
取消订阅会清理订阅和调度器
关闭会移除所有活动订阅但会 不 关闭共享的 NATS 连接
模式
模式
行为
何时使用
MULTI_CHANNEL
每种事件类型映射到其自己的主题
默认;主题更小,分离更好
SINGLE_CHANNEL
所有事件路由到 ALL_SINGLE_CHANNEL
当需要跨事件类型的统一顺序时
优点
👍 超低延迟传递 👍 当事件不 不 需要持久性或重放时的理想选择 👍 非常轻量 — 最少的依赖和配置 👍 当系统已使用 NATS 作为消息传递时非常合适
限制
ℹ️ 事件为 不持久化 — 丢失的消息无法重放 ℹ️ 订阅者必须连接才能接收事件 ℹ️ 在调度器重建或重新连接期间可能发生重复 ℹ️ 不支持消费者偏移、背压或流修剪(这需要 JetStream,目前计划在开发中)
传递保证: 最多一次(At-most-once)语义。 尽力而为的投递,可能丢失消息 — 事件监听器应能容忍丢失或乱序的事件。
最后更新于
这有帮助吗?