前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot如何做到自动帮我们创建RabbitMQ的Queue和Exchange

SpringBoot如何做到自动帮我们创建RabbitMQ的Queue和Exchange

原创
作者头像
喜欢天文的pony站长
修改2020-06-28 10:45:23
2.1K1
修改2020-06-28 10:45:23
举报
文章被收录于专栏:RabbitMQ实战RabbitMQ实战
  • 如果要在SpringBoot项目中查看SpringBoot帮我们做的自动配置,很简单,搜索XXXAutoConfiguration即可。
  • 如:RabbitAutoConfiguration,RedisAutoConfiguration
  • 进入RabbitAutoConfiguration
    image.png
    image.png
    解释:当classpath中存在RabbitTemplate.class, Channel.class这两个类时(即在项目中引入了RabbitMQ相关的依赖),当前配置配置类会生效。在该配置类内定义的Bean也随之生效。
  • 查看在当前配置类中注册了哪些bean,其中有一个为RabbitAdmin
    image.png
    image.png
    解释:并且该Bean在未配置spring.rabbitmq.dynamic时也默认生效。
  • 进入这个类,查看在这个bean在创建的过程中进行了哪些操作。
    image.png
    image.png
    解释:可以看到,该类实现了InitializingBean接口,那么继续查看在afterPropertiesSet()方法中进行了哪些操作。
    image.png
    image.png

解释:在连接工厂connectionFactory中注册了一个监听器,在监听器中执行了initialize()方法。

  • 查看initialize()方法。
    image.png
    image.png
    image.png
    image.png

解释:可以明显看到就是通过applicationContext.getBeansOfType(XXX.class)方法获取容器中所有类型为Queue, ExchangeBinding的bean,并根据这些bean的信息来帮我们在RabbitMQ创建队列,交换机和绑定关系。

  • 进入任意一个方法,如declareExchanges()
    image.png
    image.png

解释:可以看到,最终还是调用的channel.exchangeDeclare(),与我们手动调用创建的效果一致。

这是一种写代码的思路,平时可以借鉴一下。

# 系列文章

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 系列文章
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档