一.配置文件
spring: redis: host: 192.168.0.200 port: 6379 password: database: 1 pool.max-active: 8 pool.max-wait: -1 pool.max-idle: 8 pool.min-idle: 0 timeout: 5000
二.坐标
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
三.redis消息监听器容器以及redis监听器注入IOC容器
package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; @Configuration public class RedisConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //订阅了一个叫chat 的通道 container.addMessageListener(listenerAdapter, new PatternTopic("chat")); //这个container 可以添加多个 messageListener // container.addMessageListener(listenerAdapter, new PatternTopic("这里是监听的通道的名字")); return container; } //利用反射来创建监听到消息之后的执行方法 @Bean MessageListenerAdapter listenerAdapter(MessageReceiver receiver) { //这个地方 是给messageListenerAdapter 传入一个消息接受的处理器,利用反射的方法调用“receiveMessage” //也有好几个重载方法,这边默认调用处理器的方法 叫handleMessage 可以自己到源码里面看 return new MessageListenerAdapter(receiver, "receiveMessage");//这里2个参数和四一致 } /**redis 读取内容的template 这边跟本工程无关,可以不配置*/ @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } }
四.普通的消息处理器POJO
package com.example.demo; import org.springframework.stereotype.Component; /**redis 消息处理器*/ @Component public class MessageReceiver { /** * 接收消息的方法 */ public void receiveMessage(String message) { //这里是收到通道的消息之后执行的方法 System.out.println("跑起来了"+message); } }
五.消息发布者
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; //定时器 @EnableScheduling @Component public class TestSenderController { @Autowired private StringRedisTemplate stringRedisTemplate; //向redis消息队列index通道发布消息 @Scheduled(fixedRate = 3000) public void sendMessage(){ stringRedisTemplate.convertAndSend("chat",String.valueOf(Math.random())); } }
本文介绍了如何在SpringBoot应用中集成Redis,通过配置文件、坐标引入,设置Redis消息监听器容器和监听器,创建消息处理器POJO,最后实现消息发布者进行消息的发布与订阅。
9638

被折叠的 条评论
为什么被折叠?



