Springboot中如何使用Redis实现消息的订阅与分布呢?

欣喜 SpringBoot 发布时间:2023-12-06 09:28:33 阅读数:15976 1
下文笔者讲述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 + ">");
 
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202312/7392.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者