Redis消息订阅与发布

  1. 添加 Redis 和 Spring Data Redis 的依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    

  2. 创建 RedisMessageListenerContainer 和 RedisTemplate 实例:
    @Configuration
    public class RedisConfig {
        
        @Autowired
        private RedisConnectionFactory redisConnectionFactory;
    
        @Bean
        public RedisMessageListenerContainer messageListenerContainer() {
            RedisMessageListenerContainer container = new RedisMessageListenerContainer();
            container.setConnectionFactory(redisConnectionFactory);
            return container;
        }
    
        @Bean
        public RedisTemplate<String, Object> redisTemplate() {
            RedisTemplate<String, Object> template = new RedisTemplate<>();
            template.setConnectionFactory(redisConnectionFactory);
            template.setDefaultSerializer(new StringRedisSerializer());
            return template;
        }
    }
    

  3. 创建消息监听器:
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.connection.Message;
    import org.springframework.data.redis.connection.MessageListener;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.stereotype.Component;
    
    @Component
    public class RedisListener implements MessageListener {
        @Autowired
        RedisTemplate redisTemplate;
        @Override
        public void onMessage(Message message, byte[] bytes) {
            String s = redisTemplate.getStringSerializer().deserialize(message.getBody()).toString();
            System.err.println("key:"+s);//接收消息后的业务逻辑
        }
    }

  4. 订阅消息:
     
    @Autowired
    private RedisMessageListenerContainer container;
    
    @Autowired
    private MessageListener listener;
    
    @PostConstruct
    public void subscribe() {//订阅消息
        container.addMessageListener(listener, new PatternTopic("test"));
    }
    

  5. 发布消息:
     
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    public void publish() {
        redisTemplate.convertAndSend("test", "Hello, world!");
    }
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值