Spring Boot中使用redis的发布/订阅模式

时间:2024-12-02 11:35:55

原文:https://www.cnblogs.com/meetzy/p/7986956.html

redis不仅是一个非常强大的非关系型数据库,它同时还拥有消息中间件的pub/sub功能,在spring boot中进行如下设置就可以使用redis的pub/sub功能:

1.创建redis监听的设置类

Spring Boot中使用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);
}
}
Spring Boot中使用redis的发布/订阅模式

2.创建监听之后的receiver方法类

Spring Boot中使用redis的发布/订阅模式
@Service
public class RedisReceiver {
@Autowired
RedisService redisService; public void receiveMessage(String message) {
//这里是收到通道的消息之后执行的方法
}
}
Spring Boot中使用redis的发布/订阅模式

3.使用reidsTemplate向通道发送消息

Spring Boot中使用redis的发布/订阅模式
@Service
public class RedisService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
  //向通道发送消息的方法
public void sendChannelMess(String channel, String message) {
stringRedisTemplate.convertAndSend(channel, message);
}
}
Spring Boot中使用redis的发布/订阅模式