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(),与我们手动调用创建的效果一致。

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


# 系列文章


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
消息中间件 Java 网络架构
|
1月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
38 6
|
3月前
|
消息中间件 负载均衡 算法
聊聊 RocketMQ中 Topic,Queue,Consumer,Consumer Group的关系
本文详细解析了RocketMQ中Topic、Queue、Consumer及Consumer Group之间的关系。文中通过图表展示了Topic可包含多个Queue,Queue分布在不同Broker上;Consumer组内多个消费者共享消息;并深入探讨了集群消费与广播消费模式下Queue与Consumer的关系,以及Rebalancing机制在实例增减时如何确保负载均衡。理解这些关系有助于更好地掌握RocketMQ的工作原理,提升系统运维效率。
544 2
|
5月前
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
5月前
|
网络协议 Java 物联网
MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图
MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图
1099 3
|
5月前
|
消息中间件 Java Maven
|
6月前
|
消息中间件 存储 缓存
MetaQ/RocketMQ 原理问题之Consume queue中的条目长度是固定的问题如何解决
MetaQ/RocketMQ 原理问题之Consume queue中的条目长度是固定的问题如何解决
|
6月前
|
消息中间件 Java 数据安全/隐私保护
Spring Boot与RabbitMQ的集成
Spring Boot与RabbitMQ的集成
|
6月前
|
消息中间件 Java RocketMQ
Spring Boot与RocketMQ的集成
Spring Boot与RocketMQ的集成
|
消息中间件 Linux
centos7 yum快速安装rabbitmq服务
centos7 yum快速安装rabbitmq服务
245 0