愿历尽千帆,归来仍是少年
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"; }
原文:https://www.cnblogs.com/hxxgo520/p/14790670.html