原文:https://www.cnblogs.com/meetzy/p/7986956.html
redis不仅是一个非常强大的非关系型数据库,它同时还拥有消息中间件的pub/sub功能,在spring boot中进行如下设置就可以使用redis的pub/sub功能:
1.创建redis监听的设置类
@Configuration public class RedisSubListenerConfig { //初始化监听器 @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter, new PatternTopic("这里是监听的通道的名字")); return container; } //利用反射来创建监听到消息之后的执行方法 @Bean MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) { return new MessageListenerAdapter(redisReceiver, "receiveMessage"); }
//使用默认的工厂初始化redis操作模板 @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } }
2.创建监听之后的receiver方法类
@Service public class RedisReceiver { @Autowired RedisService redisService; public void receiveMessage(String message) { //这里是收到通道的消息之后执行的方法 } }
3.使用reidsTemplate向通道发送消息
@Service public class RedisService { @Autowired private StringRedisTemplate stringRedisTemplate; //向通道发送消息的方法 public void sendChannelMess(String channel, String message) { stringRedisTemplate.convertAndSend(channel, message); } }