springboot使用redis實現釋出與訂閱
阿新 • • 發佈:2018-12-23
- 配置redis連線地址
# Redis伺服器地址
spring.redis.host=youxiu326.xin
# Redis伺服器連線埠
spring.redis.port=6379
# Redis伺服器連線密碼(預設為空)
spring.redis.password=
- redis訂閱者
/** * 訊息處理器POJO * redis訂閱 */ @Component public class ConsumerMsg { /**接收訊息的方法*/ public void receiveMessage(String message,String chanel){ System.out.println("收到一條訊息:"+message); System.out.println("通道名稱:"+chanel); } }
- redis配置類
@Configuration public class RedisMessageConfig{ @Autowired private RedisTemplate<Object, Object> redisTemplate; @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //訂閱了一個叫blog.youxiu326.com的通道 container.addMessageListener(listenerAdapter, new PatternTopic("blog.youxiu326.com")); //這個container 可以新增多個messageListener return container; } /** * 訊息監聽器介面卡,繫結訊息處理器,利用反射技術呼叫訊息處理器的業務方法 * @param receiver * @return */ @Bean MessageListenerAdapter listenerAdapter(ConsumerMsg receiver) { //這個地方 是給messageListenerAdapter 傳入一個訊息接受的處理器,利用反射的方法呼叫“receiveMessage” //也有好幾個過載方法,這邊預設呼叫處理器的方法 叫handleMessage 可以自己到原始碼裡面看 return new MessageListenerAdapter(receiver, "receiveMessage"); }
此時
- ConsumerMsg類就已經可以訂閱blog.youxiu326.com通道的訊息了
- redis釋出
@Controller public class RedisCtrl { @Autowired private StringRedisTemplate stringRedisTemplate; /** * redis釋出 * @return */ @RequestMapping("/test") public @ResponseBody String test(){ /** * 通過blog.youxiu326.com通道傳送了一條訊息 */ stringRedisTemplate.convertAndSend("blog.youxiu326.com", "牛逼不不不"); return "ok"; } }
啟動專案,訪問 */test 就可以在控制檯看到效果