我在生产项目里是如何使用Redis发布订阅的?(二)Java版代码实现(含源码)

上篇文章讲了在实际项目里的哪些业务场景用到Redis发布订阅,这篇文章就讲一下,在Java中如何实现的。

 

图解代码结构

发布订阅的理论以及使用场景大家都已经有了大致了解了,但是怎么用代码实现发布订阅呢?在这里给大家分享一下实现方式。

 

我们以第三种使用场景为例,先来看一下整体实现类图吧。

我在生产项目里是如何使用Redis发布订阅的?(二)Java版代码实现(含源码)

 

解释一下,这里我们首先定义一个统一接口`ICacheUpdate`,只有一个`update`方法,我们令`Service`层实现这个方法,执行具体的更新操作。

 

我们再来看`RedisMsgPubSub`,它继承`redis.clients.jedis.JedisPubSub`,主要重写其`onMessage()`方法(订阅的频道有消息到来时会触发这个方法),我们在这个方法里调用`RedisMsgPubSub`的`update`方法执行更新操作。

 

当我们有多个`Service`实现`ICacheUpdate`时,我们就非常迫切地需要一个管理器来集中管理这些`Service`,并且当触发onMessage方法时要告诉onMessage方法具体调用哪个`ICacheUpdate`的实现类,所以我们有了`PubSubManager`。并且我们单独开启一个线程来维护发布订阅,所以管理器继承了`Thread`类。

 

代码实现

具体代码:

统一接口

public interface ICacheUpdate { public void update(); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxysj.html