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 + ">"); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。