spring boot 使用redis進行發布訂閱


異步消息的方式有很多,這篇博客介紹如何使用redis進行發布訂閱,

完成這個示例只需要三個文件

 

1.redis消息監聽配置

@Configuration public class RedisListenerConfig { /** * redis消息監聽器容器 * 可以添加多個監聽不同話題的redis監聽器,只需要把消息監聽器和相應的消息訂閱處理器綁定,該消息監聽器 * 通過反射技術調用消息訂閱處理器的相關方法進行一些業務處理 * @param connectionFactory * @param listenerAdapter * @return
     */ @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter ) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //可以添加多個 messageListener
        container.addMessageListener(listenerAdapter, new PatternTopic("index")); return container; } /** * 消息監聽器適配器,綁定消息處理器,利用反射技術調用消息處理器的業務方法 * @param redisReceiver * @return
     */ @Bean MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) { System.out.println("消息適配器進來了"); return new MessageListenerAdapter(redisReceiver, "receiveMessage"); } //使用默認的工廠初始化redis操作模板
 @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } }

 

2.消息處理

@Service public class RedisReceiver { public void receiveMessage(String message) { System.out.println("消息來了:"+message); //這里是收到通道的消息之后執行的方法
 } }

 

3.一個發送消息的定時器

//定時器
@EnableScheduling @Component public class TestSenderController { @Autowired private StringRedisTemplate stringRedisTemplate; //向redis消息隊列index通道發布消息
    @Scheduled(fixedRate = 3000) public void sendMessage(){ stringRedisTemplate.convertAndSend("index",String.valueOf(Math.random())); } }

 

運行結果如圖

 

本篇博客地址:https://gitee.com/zhao-baolin/redis-message

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM