首页 > 编程语言 > 详细

从零搭建springboot服务03-redis消息订阅

时间:2021-05-20 21:51:50      阅读:17      评论:0      收藏:0      [点我收藏+]

愿历尽千帆,归来仍是少年

1.所需依赖

        <!-- Redis依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!--常用工具类 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

2.配置application.yml文件

# redis配置
  redis:
    # Redis数据库索引(默认0) 此处db1
    database: 1
    # redis服务器地址
    host: xxx
    # Redis服务器连接端口
    port: 111
    # Redis服务器连接密码(默认为空
    password: xxx
    # Lettuce 是一个可伸缩线程安全的 Redis 客户端,多个线程可以共享同一个 RedisConnection,它利用优秀 netty NIO 框架来高效地管理多个连接
    lettuce:
      pool:
        # 连接池中的最大空闲连接
        max-idle: 80
        min-idle: 10
    jedis:
      pool:
        # 连接池最大连接数
        max-active: 300
        # 连接池中的最大空闲连接
        max-idle: 100
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1ms
        # 连接池中的最小空闲连接
        min-idle: 0
    timeout: 5000ms

3.消息订阅者配置类

/**
 * 消息订阅者配置类
 *
 * @author hxx
 * @version 1.0
 * @date 2021/5/19 14:34
 */
/*@Configuration用于定义配置类,可替换xml配置文件*/
@Configuration
public class RedisSubscriberConfig {

    /**
     * 创建消息监听容器
     *
     * @param redisConnectionFactory
     * @param reciver1ListenerAdapter
     * @param reciver2ListenerAdapter
     * @return
     */
    @Bean
    public RedisMessageListenerContainer getRedisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory,
              MessageListenerAdapter reciver1ListenerAdapter, MessageListenerAdapter reciver2ListenerAdapter) {
        RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
        redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
        //接受消息的key
        redisMessageListenerContainer.addMessageListener(reciver1ListenerAdapter, new PatternTopic("reciver1"));
        redisMessageListenerContainer.addMessageListener(reciver2ListenerAdapter, new PatternTopic("reciver2"));
        return redisMessageListenerContainer;
    }

    /**
     * 消息监听适配器,注入接受消息方法,输入方法名字 反射方法
     *
     * @param receiver1
     * @return
     */
    @Bean
    public MessageListenerAdapter reciver1ListenerAdapter(Receiver1 receiver1) {
        return new MessageListenerAdapter(receiver1, "receiveMessage"); //当没有继承MessageListener时需要写方法名字
    }

    /**
     * 消息监听适配器,注入接受消息方法,输入方法名字 反射方法
     *
     * @param receiver2
     * @return
     */
    @Bean
    public MessageListenerAdapter reciver2ListenerAdapter(Receiver2 receiver2) {
        return new MessageListenerAdapter(receiver2, "receiveMessage"); //当没有继承MessageListener时需要写方法名字
    }

}

 

4.消费者

/**
 * 消费者
 *
 * @author hxx
 * @version 1.0
 * @date 2021/5/19 15:01
 */
/*@controller 控制器(注入服务)控制层*/
@Component
public class Receiver1 {

    private static Logger logger = LogManager.getLogger(Receiver1.class);

    public void receiveMessage(String message) {
        logger.info("收到的mq消息" + message);
    }

}

 

5.发送者

    @ApiOperation(value = "测试redis", notes = "测试redis")
    @GetMapping(value = "/redis")
    public String pubXgame(){
        redisTemplate.convertAndSend("reciver1","111111");
        logger.info("Publisher sendes reciver1... ");
        return "success";
    }

 

从零搭建springboot服务03-redis消息订阅

原文:https://www.cnblogs.com/hxxgo520/p/14790670.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!