Springboot中如何使用Redis实现消息的订阅与分布呢?
下文笔者讲述SpringBoot借助Redis实现消息的订阅与发布的简介说明,如下所示
Redis简介
Redis 是一个内存数据库
我们通常将一些实时的热数据放入到redis数据库中
也可以借助Redis实现一个消息的订阅与发布操作
那么下文笔者将讲述Redis实现消息的订阅与发布的操作说明,如下所示
Redis实现消息订阅与发布的实现思路
1.建立Controller
@Autowired
private StringredisTemplate stringRedisTemplate;
@GetMapping("sendRedisMessageTest")
public String SendRedisMessage() {
System.out.println("发送消息");
//数据存储至Redis中
stringRedisTemplate.convertAndSend("chat", "我是一条消息");
return "Send Success" ;
}
消息订阅的实现思路
消息监听器
@Configuration public class RedisMessagelistener { /** * redis消息监听器容器 * 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器 * 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理 * @param connectionFactory * @param listenerAdapter * @return */ @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //订阅了一个叫chat 的通道 container.addMessageListener(listenerAdapter, new PatternTopic("chat")); //这个container 可以添加多个 messageListener //container.addMessageListener(listenerAdapter, new PatternTopic("这里是监听的通道的名字")); return container; } /** * 消息监听器适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法 * @param receiver * @return */ @Bean MessageListenerAdapter listenerAdapter(Receiver receiver) { //这个地方 是给messageListenerAdapter 传入一个消息接受的处理器,利用反射的方法调用“receiveMessage” //也有好几个重载方法,这边默认调用处理器的方法 叫handleMessage 可以自己到源码里面看 //receiveMessage就是对应消费者那边的消费方法吗,而Receiver是自己弄的一个消费者类 return new MessageListenerAdapter(receiver, "receiveMessage"); }
消息接收类 Receiver.java
/**
* redis消息处理器
*/
@Component
public class Receiver {
private static final Logger LOGGER = LoggerFactory.getLogger(Receiver.class);
/**
* 接收到消息的方法,message就是指从主题获取的消息,主题配置在RedisMessageListener配置类做配置
* @param message
*/
public void receiveMessage(String message) {
TestService testService=new TestService();
//testService.getData();
LOGGER.info("Received <" + message + ">");
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


