最新项目中用到了这个,研究了一番没看懂,于是在github上找了个小案例自己动手写了一下,终于摸清楚了流程!
有时候项目中把redis中缓存的数据更新后,消费此消息的对象并不知道已经更新了该缓存数据,导致无法实时操作最新的缓存数据,redis的消息发布于订阅则可以解决这个问题。
首先消息发布与订阅是基于队列的方式实现的,对于简便的功能,使用redis提供的此功能则完美解决,而对于数据量大且复杂的项目建议使用第三方消息队列,如rabbitMq.activeMq等等
首先在实现发布与订阅功能前,先确定需要哪些步骤和需要使用到的对象:
1.注册器(registrar ):注册订阅者与频道的绑定关系
RedisMessageListenerContainer
里面有一个方法:
private void addListener(MessageListener listener, Collection<? extends Topic> topics) {
............................
}
相当于注册
此方法接收两个参数:
MessageListener:消息发布器,是一个接口
此接口只有一个方法:
void onMessage(Message var1, @Nullable byte[] var2);
此方法告诉通知消费