核心代码:
主要有三步:
- 获取主题
- 主题添加订阅者
- 通过主题发布事件
1 | java复制代码RTopic<SomeObject> topic = redisson.getTopic("anyTopic"); |
具体过程
订阅者实现
1 | java复制代码@Component |
注册订阅者
1 | less复制代码@Configuration |
发布事件
1 | less复制代码@RunWith(SpringRunner.class) |
订阅到多个主题
1 | typescript复制代码// subscribe to all topics by `topic1.*` pattern |
原理
订阅:
发布:
Redis 发布订阅功能的特性
Topic 模式监听器在重连到 Redis 服务器或者 Redis 服务器故障恢复时自动重新订阅。
- 消息的发送者与接收者之间通过 channel 绑定:channel 可以是确定的字符串,也可以基于模式匹配
- 客户端可以订阅任意多个channel
- 发送者发送的消息无法持久化,所以可能会造成消息丢失
- 由于消息无法持久化,所以,消费者无法收到在订阅channel之前发送的消息
- 发送者与客户端之间的消息发送与接收不存在 ACK 机制
Redis 发布订阅功能的适用场景
由于没有消息持久化与 ACK 的保证,所以,Redis 的发布订阅功能并不可靠。这也就导致了它的应用场景很有限,建议用于实时与可靠性要求不高的场景。例如:消息推送,内网环境的消息通知等
本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
本文转载自: 掘金