Spring Boot学习:Redis发布订阅

Redis发布订阅

Redis 2.8 及以上版本实现了发布订阅的功能,发送者可以通过 PUBLISH发布消息,订阅者通过 SUBSCRIBE 订阅接收消息或通过UNSUBSCRIBE 取消订阅。当发布者发布消息到指定频道时,所有订阅该频道的订阅者都能够接收到消息。这对于实时通信、聊天应用、实时数据更新等场景非常有用。

Redis发布订阅实现

下面我就在Spring Boot项目中使用Redisson 来实现发布订阅
1、添加redisson依赖,依赖如下

		<dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.16.8</version>
        </dependency>

2、创建Redisson客户端

我们需要创建一个Redisson客户端实例来使用Redisson,一般通过在Spring Boot配置文件中添加Redisson客户端的配置来创建它

下面是一个简单的配置示例

@Configuration  
public class RedissonConfig {
     
    @Value("${redisson.address}")  
    private String address;  
  
    @Bean(destroyMethod="shutdown")  
    RedissonClient redisson() throws IOException {
     
        Config config = new Config();  
        config.useSingleServer().setAddress(address);  
        return Redisson.create(config);  
    }  
}

3、创建发布者

接下来,您需要创建一个发布者类,用于向指定的频道发布消息。您可以使用Redisson客户端的getTopic方法获取指定的频道,并使用publish方法发布消息。例如:

@Service  
public class Publisher {
     
    @Autowired  
    private RedissonClient redissonClient;  
  
    /**
     * 发布消息到 Topic
     * @param topicName Topic名称
     * @param message 消息体
     */
    public void publish(String topicName, String message) {
   
        RTopic topic = redissonClient.getTopic(topicName);
        topic.publish(message);
    }

}

4、创建消息监听器类

为了定义接收到消息后的处理逻辑,还需要创建一个消息监听器接口(MessageListener)的实现类,实现onMessage方法来定义我们的消息处理逻辑

@Slf4j
@Component
public class MyMessageListener implements org.redisson.api.listener.MessageListener<String> {
   

    /**
     * 消息处理
     * @param channel
     * @param msg
     */
    @Override
    public void onMessage(CharSequence channel, String msg) {
   
        log.info("监听到消息:"+msg);
    }
}

5、创建订阅者

最后,您需要创建一个订阅者类,用于订阅指定的频道并处理接收到的消息。您可以使用Redisson客户端的getTopic方法获取指定的频道,并使用addListener方法添加消息监听器。例如:

@Slf4j
@Component
public class Subscriber{
   

    /**
     * 主题名称
     */
    public static final String TOPIC_NAME = "test_topic";

    @Autowired
    private RedissonClient redissonClient;

    @Autowired
    private MyMessageListener myMessageListener;

    /**
     * 订阅主题
     */
    @PostConstruct
    public void init() {
   
        redissonClient.getTopic(TOPIC_NAME)
                .addListener(String.class, myMessageListener);
    }

    /**
     * 订阅主题
     * @param topicName 主题名
     * @param type      消息类型
     * @param listener  监听器
     */
    public void subscribeTopic(String topicName, Class type, MessageListener listener) {
   
        RTopic topic = redissonClient.getTopic(topicName);
        topic.addListener(type,listener);
    }
}

@PostConstruct 是Java中的一个注解,用于标记在依赖注入完成后,应该执行的方法。这个注解通常用于在Spring或Java EE环境中,当一个bean被初始化并完成依赖注入后,执行一些初始化的操作。

这里是在初始化的时候先订阅一些我们需要使用的主题

相关推荐

  1. Springboot整合Redis实现消息发布订阅

    2023-12-27 10:04:02       39 阅读
  2. Spring Boot学习Redis发布订阅

    2023-12-27 10:04:02       33 阅读
  3. Redis学习笔记-发布订阅PubSub

    2023-12-27 10:04:02       40 阅读
  4. Redis-发布订阅

    2023-12-27 10:04:02       19 阅读
  5. Redis 怎么发布订阅

    2023-12-27 10:04:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-27 10:04:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-27 10:04:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-27 10:04:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-27 10:04:02       18 阅读

热门阅读

  1. SQL使用从入门到优化:目录

    2023-12-27 10:04:02       39 阅读
  2. Flink on K8S集群搭建及StreamPark平台安装

    2023-12-27 10:04:02       39 阅读
  3. Django、Python版本升级问题大汇总

    2023-12-27 10:04:02       40 阅读
  4. vue前端的ref()用法

    2023-12-27 10:04:02       36 阅读
  5. iOS获取手机型号(包含iOS15系列)

    2023-12-27 10:04:02       37 阅读
  6. 排序实训问答

    2023-12-27 10:04:02       36 阅读
  7. 博客搬家公告

    2023-12-27 10:04:02       42 阅读
  8. centos卸载jenkins

    2023-12-27 10:04:02       40 阅读
  9. python读取xlsx格式的excel

    2023-12-27 10:04:02       38 阅读
  10. 【测试开发】测试分类相关知识

    2023-12-27 10:04:02       34 阅读
  11. Hadoop-3.3.4集群部分lib缺失问题

    2023-12-27 10:04:02       38 阅读
  12. AutoSAR(基础入门篇)2.1Autosar架构中的AppL

    2023-12-27 10:04:02       42 阅读
  13. vs c++ 查询mysql 获取返回集数据转化

    2023-12-27 10:04:02       41 阅读