標籤:

spring boot 使用redis進行發布訂閱

spring boot 使用redis進行發布訂閱

4 人贊了文章

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

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

1.redis消息監聽配置

@Configurationpublicclass RedisListenerConfig {

/** * redis消息監聽器容器

* 可以添加多個監聽不同話題的redis監聽器,只需要把消息監聽器和相應的消息訂閱處理器綁定,該消息監聽器

* 通過反射技術調用消息訂閱處理器的相關方法進行一些業務處理

* @param connectionFactory

* @param listenerAdapter

* @return*/ @Bean

RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,

MessageListenerAdapter listenerAdapter

) {

RedisMessageListenerContainer container =new RedisMessageListenerContainer();

container.setConnectionFactory(connectionFactory);

//可以添加多個 messageListenercontainer.addMessageListener(listenerAdapter,newPatternTopic("index"));

return container;

}

/** * 消息監聽器適配器,綁定消息處理器,利用反射技術調用消息處理器的業務方法

* @param redisReceiver

* @return*/ @Bean

MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) {

System.out.println("消息適配器進來了");

returnnewMessageListenerAdapter(redisReceiver, "receiveMessage");

}

//使用默認的工廠初始化redis操作模板 @Bean

StringRedisTemplate template(RedisConnectionFactory connectionFactory) {

returnnew StringRedisTemplate(connectionFactory);

}

}

2.消息處理

@Servicepublicclass RedisReceiver {

publicvoid receiveMessage(String message) {

System.out.println("消息來了:"+message);

//這裡是收到通道的消息之後執行的方法 }

}

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

//定時器@EnableScheduling

@Componentpublicclass TestSenderController {

@Autowired

private StringRedisTemplate stringRedisTemplate;

//向redis消息隊列index通道發布消息@Scheduled(fixedRate = 3000)

publicvoid sendMessage(){

stringRedisTemplate.convertAndSend("index",String.valueOf(Math.random()));

}

}

運行結果如圖

{附}:大家可以點擊加入群:【java高級架構進階】:jq.qq.com/?裡面有Java高級大牛直播講解知識點 走的就是高端路線(如果你想跳槽換工作 但是技術又不夠 或者工作上遇到了瓶頸 我這裡有一個JAVA的免費直播課程 講的是高端的知識點基礎不好的誤入喲 只要你有1-5年的開發經驗可以加群找我要課堂鏈接 注意:是免費的 沒有開發經驗誤入哦)


推薦閱讀:

PHP操作Redis詳解案例
基於Redis實現分散式鎖
SpringBoot集成Redis來實現緩存技術方案
消息隊列的Redis實現
redis的實現之美其一

TAG:NoSQL | Redis | Spring |