Redis消息订阅与发布

  1. 添加 Redis 和 Spring Data Redis 的依赖
     
      
    1. <dependency>

    2. <groupId>org.springframework.boot</groupId>

    3. <artifactId>spring-boot-starter-data-redis</artifactId>

    4. </dependency>

  2. 创建 RedisMessageListenerContainer 和 RedisTemplate 实例:
     
      
    1. @Configuration

    2. public class RedisConfig {

    3. @Autowired

    4. private RedisConnectionFactory redisConnectionFactory;

    5. @Bean

    6. public RedisMessageListenerContainer messageListenerContainer() {

    7. RedisMessageListenerContainer container = new RedisMessageListenerContainer();

    8. container.setConnectionFactory(redisConnectionFactory);

    9. return container;

    10. }

    11. @Bean

    12. public RedisTemplate<String, Object> redisTemplate() {

    13. RedisTemplate<String, Object> template = new RedisTemplate<>();

    14. template.setConnectionFactory(redisConnectionFactory);

    15. template.setDefaultSerializer(new StringRedisSerializer());

    16. return template;

    17. }

    18. }

  3. 创建消息监听器:
     
     
      
    1. import org.springframework.beans.factory.annotation.Autowired;

    2. import org.springframework.data.redis.connection.Message;

    3. import org.springframework.data.redis.connection.MessageListener;

    4. import org.springframework.data.redis.core.RedisTemplate;

    5. import org.springframework.stereotype.Component;

    6. @Component

    7. public class RedisListener implements MessageListener {

    8. @Autowired

    9. RedisTemplate redisTemplate;

    10. @Override

    11. public void onMessage(Message message, byte[] bytes) {

    12. String s = redisTemplate.getStringSerializer().deserialize(message.getBody()).toString();

    13. System.err.println("key:"+s);//接收消息后的业务逻辑

    14. }

    15. }

  4. 订阅消息:
     
     
      
    1. @Autowired

    2. private RedisMessageListenerContainer container;

    3. @Autowired

    4. private MessageListener listener;

    5. @PostConstruct

    6. public void subscribe() {//订阅消息

    7. container.addMessageListener(listener, new PatternTopic("test"));

    8. }

  5. 发布消息:
     
     
      
    1. @Autowired

    2. private RedisTemplate<String, Object> redisTemplate;

    3. public void publish() {

    4. redisTemplate.convertAndSend("test", "Hello, world!");

    5. }

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值