声明:参考文章:https://blog.csdn.net/myNameIssls/article/details/75471012?locationNum=2&fps=1
一·使用maven,在项目中引入redis启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
二.注册一个redis消息监听类
@Configuration public class RedisSubListenerConfig { //不同的频道名 private static final String channel = "testchannel"; private static final String channel2 = "chat"; /** * redis消息监听器容器 * 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器 * 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理 * @param connectionFactory * @param listenerAdapter * @return */ @Bean //相当于xml中的bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter,MessageListenerAdapter listenerAdapter2) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //订阅了一个叫testchannel 的通道 container.addMessageListener(listenerAdapter, new PatternTopic(RedisSubListenerConfig.channel)); //订阅了一个叫chat的频道 container.addMessageListener(listenerAdapter2, new PatternTopic(RedisSubListenerConfig.channel2)); return container; } /** * 消息监听器适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法 * @param receiver * @return */ @Bean MessageListenerAdapter listenerAdapter(MessageReceiver receiver) { return new MessageListenerAdapter(receiver, "receiveMessage"); } @Bean MessageListenerAdapter listenerAdapter2(MessageReceiver receiver) { return new MessageListenerAdapter(receiver, "receiveMessage2"); } /**redis 读取内容的template */ @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } }
三·编写处理订阅消息的类
@Component public class MessageReceiver { /**接收消息的方法*/ public void receiveMessage(String message){ System.out.println("收到一条消息:"+message); } /**接收消息的方法*/ public void receiveMessage2(String message){ System.out.println("收到一条消息2:"+message); } }
四.启动程序,向redis的chat以及testchannel频道中发送消息,都可以监听到