SpringBoot2.0中使用訂閱redis的多個頻道的消息
阿新 • • 發佈:2018-05-12
HA BE ger redist temp 參考 AS one mave
聲明:參考文章: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頻道中發送消息,都可以監聽到
SpringBoot2.0中使用訂閱redis的多個頻道的消息