SpringBoot如何作到自動幫咱們建立RabbitMQ的Queue和Exchange的?

  • 若是要在SpringBoot項目中查看SpringBoot幫咱們作的自動配置,很簡單,搜索XXXAutoConfiguration便可。web

  • 如:RabbitAutoConfiguration,RedisAutoConfigurationspring

  • 進入RabbitAutoConfiguration解釋:當classpath中存在RabbitTemplate.class, Channel.class這兩個類時(即在項目中引入了RabbitMQ相關的依賴),當前配置配置類會生效。在該配置類內定義的Bean也隨之生效。微信

  • 查看在當前配置類中註冊了哪些bean,其中有一個爲RabbitAdmin解釋:而且該Bean在未配置spring.rabbitmq.dynamic時也默認生效。app

  • 進入這個類,查看在這個bean在建立的過程當中進行了哪些操做。解釋:能夠看到,該類實現了InitializingBean接口,那麼繼續查看在afterPropertiesSet()方法中進行了哪些操做。編輯器

解釋:在鏈接工廠connectionFactory中註冊了一個監聽器,在監聽器中執行了initialize()方法。url

  • 查看 initialize()方法。

解釋:能夠明顯看到就是經過applicationContext.getBeansOfType(XXX.class)方法獲取容器中全部類型爲QueueExchangeBinding的bean,並根據這些bean的信息來幫咱們在RabbitMQ建立隊列,交換機和綁定關係。spa

  • 進入任意一個方法,如 declareExchanges()

解釋:能夠看到,最終仍是調用的channel.exchangeDeclare(),與咱們手動調用建立的效果一致。.net

這是一種寫代碼的思路,平時能夠借鑑一下。3d

# 系列文章

本文分享自微信公衆號 - 喜歡天文(AllUnderControl)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。code

相關文章
相關標籤/搜索