spring boot redis发布订阅

15 篇文章 0 订阅
3 篇文章 0 订阅

1.pom 依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

 

2.配置

redis:
        host: 10.5.6.13
        port: 6379
        password: sensetime
        timeout: 10000
        maxIdle: 300
        maxTotal: 1000
        maxWaitMillis: 1000
        minEvictableIdleTimeMillis: 300000  
        numTestsPerEvictionRun: 1024
        timeBetweenEvictionRunsMillis: 30000  
        testOnBorrow: true
        testWhileIdle: true 
 

 

3.redisConfig

/**
     * 创建任务池,运行线程等待处理redis的消息
     */
    @Bean
    public ThreadPoolTaskScheduler initTaskScheduler() {
        if (null != taskScheduler) {
            return taskScheduler;
        }
        taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(20);
        return taskScheduler;
    }

    // 定义监听渠道,名称为topic1
    @Bean
    public ChannelTopic topic() {
        return new ChannelTopic(topic);
    }
    /**
     * 定义redis的监听器
     * 
     * @return 监听容器
     */
    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        // Redis连接工厂
        container.setConnectionFactory(redisConnectionFactory);
        // 设置运行任务的线程池
        container.setTaskExecutor(initTaskScheduler());
        // 使用监听器监听Redis的消息
        container.addMessageListener(new ConsumerRedisListener(), topic());
        return container;

    }
 

4.消费监听器

public class ConsumerRedisListener implements MessageListener {

    @Override
    public void onMessage(Message message, byte[] pattern) {
        // 消息体
        String body = new String(message.getBody());
        // 渠道名称
        String topic = new String(pattern);
        System.out.println("消息体:" + body);
        System.out.println("渠道名称:" + topic);
    }

}

 

5.发布-测试

stringRedisTemplate.convertAndSend("faceSearchTopic","hello redis");

 

6.结果

 

7.到这步说明已经发布订阅成功。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值