专栏首页RabbitMQ实战SpringBoot如何做到自动帮我们创建RabbitMQ的Queue和Exchange
原创

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

  • 如果要在SpringBoot项目中查看SpringBoot帮我们做的自动配置,很简单,搜索XXXAutoConfiguration即可。
  • 如:RabbitAutoConfiguration,RedisAutoConfiguration
  • 进入RabbitAutoConfiguration
    image.png
    解释:当classpath中存在RabbitTemplate.class, Channel.class这两个类时(即在项目中引入了RabbitMQ相关的依赖),当前配置配置类会生效。在该配置类内定义的Bean也随之生效。
  • 查看在当前配置类中注册了哪些bean,其中有一个为RabbitAdmin
    image.png
    解释:并且该Bean在未配置spring.rabbitmq.dynamic时也默认生效。
  • 进入这个类,查看在这个bean在创建的过程中进行了哪些操作。
    image.png
    解释:可以看到,该类实现了InitializingBean接口,那么继续查看在afterPropertiesSet()方法中进行了哪些操作。
    image.png

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

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

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

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

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

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

# 系列文章

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 单例设计模式

    喜欢天文的pony站长
  • 【NIO】NIO三剑客之一ByteBuffer介绍与使用

    https://github.com/FutaoSmile/learn-IO/tree/master/practice/src/main/java/com/fu...

    喜欢天文的pony站长
  • 一个需求的三种实现(sql)

    思路1(通过java代码实现): 根据erpOrderId查询订单表,如果数据不存在则insert新订单,如果存在则继续判断下一条erpOrderId

    喜欢天文的pony站长
  • 深度学习之神经网络(反向传播算法)(三)

    神经网络最开始是受生物神经系统的启发,为了模拟生物神经系统而出现的。大脑最基本的计算单元是神经元,人类的神经系统中大概有86亿的神经元,它们之间通过1014-1...

    李小白是一只喵
  • 高质量编码-地图弹窗

    此文介绍arcgis js api信息弹窗infoWindow的setContent方法

    MiaoGIS
  • 【论文笔记系列】自动搜索损失函数?AM-LFS:AutoML for Loss Function Search

    不过这篇文章将介绍一下如何使用AutoML技术来搜索损失函数。一般来说,损失函数都是需要我们手动设计的,以分类任务而言,我们通常会使用交叉熵。碰到数据集imba...

    marsggbo
  • 我的安卓App开发之旅:旧手机变废为宝做一个震动App

    最近发现给老爸买的安卓手机,电池出现了点问题,充电只能充到60%,还每次都弹出这烦人的警告。感觉这是设计好的,整整好好用了3年,这未免有点太巧了吧?

    Android技术干货分享
  • bootstrap3 组件

    <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span>...

    用户5760343
  • 【玩转腾讯云】十一.轻松打造一款好用的私有云笔记

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • Google Colab免费GPU教程

    现在,你可以开发深度学习与应用谷歌Colaboratory -on的免费特斯拉K80 GPU -使用Keras,Tensorflow和PyTorch。

    iOSDevLog

扫码关注云+社区

领取腾讯云代金券