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

相关文章
相关标签/搜索