一. 发布订阅模式(pub/sub)介绍
pub/sub 是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:
订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者(如服务器)可将订阅者感兴趣的事件随时通知相关订阅者。
同样,Redis 的 pub/sub 是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合, Redis 作为一个 pub/sub 的 server, 在订阅者和发布者之间起到了消息路由的功能。
二. 应用场景
当前的应用场景是:我们需要建立一个独立的监控系统来监控另外一个系统的接口运行状态,需要做的工作主要分为两部分:被监测系统中的消息发布和监测系统中的消息订阅和消费。
由于需要传输的信息较多,我们使用 json 格式进行消息交互。
三. 代码实现
消息发布端
消息发布端是被监测的系统,新建 RedisPublisher 类进行消息发布
public class RedisPublisher {
private final static Logger logger = LoggerFactory.getLogger(RedisPublisher.class);
private final JedisPool jedisPool;
public RedisPublisher(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
/**
* 发布一个消息
*
* @param channel
* @param message
*/
public void publishMsg(String channel, String message) {
Jedis jedis = null;
logger.info("发布消息,频道:" + channel + ";内容:" + message);
try {
jedis = jedisPool.get