206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点

这篇具有很好参考价值的文章主要介绍了206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

★ Spring Boot 为 RabbitMQ 提供的自动配置

▲ Spring Boot 提供了一个 spring-boot-starter-amqp 的Starter来支持RabbitMQ,只要添加该Starter,它就会添加 spring-rabbit 依赖库(它有传递依赖了amqp-client.jar)

▲ 只要类加载路径下包含了 spring-rabbit 依赖库,
Spring Boot 会自动配置 CachingConnectionFactory
(CachingConnectionFactory:带缓存的连接工厂,由 RabbitConnectionFactoryCreator 负责)、

还会自动配置 AmqpAdmin 和 AmqpTemplate
(实际上就是RabbitTemplate,由RabbitTemplateConfiguration负责)。

AmqpAdmin 负责管理Exchange、队列和绑定。
AmqpTemplate 负责发送、接收消息。

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq
206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq
206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

▲ 自动配置类:RabbitAutoConfiguration

自动配置类:RabbitAutoConfiguration

 ——只有当RabbitTemplate(位于spring-rabbit.jar包中), 
         Channel(位于amqp-client.jar中)两个类存在时,该自动配置类才会生效。

 该自动配置类配置了 RabbitMessagingTemplate,该Bean只是对RabbitTemplate的简单包装。

上面RabbitAutoConfiguration自动配置类包含如下的两个静态内部类(配置类)

静态内部类:RabbitConnectionFactoryCreator:

它的作用就是在容器中配置一个 CachingConnectionFactory ,
而 CachingConnectionFactory 对 RabbitMQ 原生的 ConnectionFactory 进行包装,增加了缓存功能。

静态内部类:RabbitTemplateConfiguration:

它的作用是在容器中配置了3个Bean:

Bean A:RabbitTemplateConfigurer,它负责对容器中RabbitTemplate进行定制。 
        该Bean可以被取代,开发者一旦在容器中配置了自己的RabbitTemplateConfigurer,
        它就会取代该Bean。

Bean B: RabbitTemplate:它就是一个AmqpTemplate。
         如果开发者配置了自己的 RabbitTemplate,自动配置的RabbitTemplate就失效。

                     AmqpTemplate
                           ↑
                     RabbitOperations
                           ↑
                     RabbitTemplate

Bean C: AmqpAdmin:如果开发者配置了自己的AmqpAdmin,自动配置的AmqpAdmin就失效。
         但如果你将spring.rabbitmq.dynamic属性指定为false,那么该AmqpAdmin就不会自动配置了。

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq
206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq
206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

▲ 属性处理类:RabbitProperties

  属性处理类:RabbitProperties:

 该属性处理类除了可配置host、port、password、username等基本属性之外,

 还可以配置spring.rabbitmq.ssl.*开头的属性,用于配置SSL连接相关keyStore、trustStore等相关信息。
 还可以配置spring.rabbitmq.cache.*开头的属性,用于配置缓存相关信息。
 还可以配置spring.rabbitmq.listener.*开头的属性,用于配置和消息监听器的容器工厂相关的属性

 还可以配置spring.rabbitmq.template.*开头的属性,用于配置和RabbitTemplate相关的属性

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

相关配置

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

★ AmqpAdmin的方法

它主要就是提供了一些管理Exchange、Queue、绑定相关的方法。

 - void declareExchange(Exchange exchange):声明Exchange。
 - String declareQueue(Queue queue):声明队列。
 - Queue declareQueue():声明由服务器命名、独占的、自动删除的、非持久化的队列。
 - declareBinding(Binding binding):声明队列或Exchange与Exchange的绑定。
 - boolean deleteExchange(String exchangeName):删除Exchange。
 - boolean deleteQueue(String queueName):无条件地删除队列
 - void deleteQueue(String queueName, boolean unused, boolean empty):
   删除队列,只有当该队列不再使用、且没有消息时才删除。
 - void removeBinding(Binding binding):解除绑定。

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

★ AmqpTemplate的方法

它主要就是提供了一些发送消息的方法。

- convertAndSend(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor):
  自动将messag参数转换成消息、发送给exchange。
  在发送之前,还可通过messagePostProcessor参数对消息进行修改。
  
- convertSendAndReceive(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor):
  该方法发送消息之后会等待返回的消息。

- send(String exchange, String routingKey, Message message):发送消息。

- sendAndReceive(String exchange, String routingKey, Message message):
  该方法发送消息之后会等待返回的消息

- receive(String queueName, long timeoutMillis):指定从queueName队列接收消息。 
  备注:一般不会通过该方法来接收消息,而是推荐使用消息监听器、以异步的方式来接收消息。

剩下的事情,就是将AmqpAdmin、AmqpTemplate注入程序组件(Service),
然后程序组件即可通过它们来操作RabbitMQ消息队列。

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

代码演示

创建一个springboot的项目。

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq

application.properties 配置属性

206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq
206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点,Spring Boot,RabbitMQ,java-rabbitmq,spring boot,rabbitmq文章来源地址https://www.toymoban.com/news/detail-724756.html

# 配置连接 RabbitMQ 的基本信息------------------------------------------------------
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
# 下面属性可配置多个以逗号隔开的连接地址,一旦配置了该属性,host 和 port 属性就会被忽略
# spring.rabbitmq.addresses=
spring.rabbitmq.username=ljh
spring.rabbitmq.password=123456
# 连接虚拟主机
spring.rabbitmq.virtual-host=my-vhost01

# 配置RabbitMQ的缓存相关信息--------------------------------------------------------
# 指定缓存 connection ,还是缓存 channel
spring.rabbitmq.cache.connection.mode=channel
# 指定可以缓存多少个 Channel
spring.rabbitmq.cache.channel.size=50
# 如果选择的缓存模式是 connection , 那么就可以配置如下属性
# spring.rabbitmq.cache.connection.size=15

# 配置 和 RabbitTemplate 相关的属性--------------------------------------------------
# 指定 RabbitTemplate 发送消息失败时会重新尝试
spring.rabbitmq.template.retry.enabled=true
# RabbitTemplate 发送消息失败后每隔1秒重新尝试发送消息
spring.rabbitmq.template.retry.initial-interval=1s
# RabbitTemplate 发送消息失败时,最多尝试重新发送消息的次数
spring.rabbitmq.template.retry.max-attempts=5
# 设置每次尝试重新发送消息的时间间隔是一个等比数列:1s, 2s, 4s, 8s, 16s
# 第一次等1s后尝试,第二次等2s后尝试,第三次等4s后尝试重新发送消息......
spring.rabbitmq.template.retry.multiplier=2
# 指定发送消息时默认的Exchange名
spring.rabbitmq.template.exchange=""
# 指定发送消息时默认的路由key
spring.rabbitmq.template.routing-key="test"

# 配置和消息监听器的容器工厂相关的属性--------------------------------------------------
# 指定监听器容器工厂的类型
spring.rabbitmq.listener.type=simple
# 指定消息的确认模式
spring.rabbitmq.listener.simple.acknowledge-mode=auto

到了这里,关于206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【RabbitMQ】RabbitMQ整合SpringBoot案例

    【RabbitMQ】消息队列-RabbitMQ篇章 RabbitMQ实现流程 2.1 实现架构总览 实现步骤: 1:创建生产者工程:sspringboot-rabbitmq-fanout-producer 2:创建消费者工程:springboot-rabbitmq-fanout-consumer 3:引入spring-boot-rabbitmq的依赖 4:进行消息的分发和测试 5:查看和观察web控制台的状况 2.2 具体实现

    2024年02月12日
    浏览(44)
  • 【RabbitMQ】4 Spring/SpringBoot整合RabbitMQ

    spring-amqp 是对AMQP的一些概念的一些抽象, spring-rabbit 是对RabbitMQ操作的封装实现。 主要有几个核心类 RabbitAdmin 、 RabbitTemplate 、 SimpleMessageListenerContainer 等。 RabbitAdmin 类完成对Exchange,Queue,Binding的操作,在容器中管理了 RabbitAdmin 类的时候,可以对Exchange,Queue,Binding进行自

    2024年01月22日
    浏览(43)
  • SpringBoot项目整合RabbitMQ

    消息队列(Message Queue)是分布式系统中常用的组件,它允许不同的应用程序之间通过发送和接收消息进行通信。Spring Boot提供了简单且强大的方式来整合消息队列,其中包括RabbitMQ、ActiveMQ、Kafka等多种消息队列实现。 本文将以RabbitMQ为例,详细介绍如何使用Spring Boot来整合消

    2024年02月09日
    浏览(55)
  • SpringBoot 整合 RabbitMQ

    由于有的 Idea 不选择插线无法创建 Spring Boot 项目,这里我们先随便选一个插件,大家也可以根据需求选择~~ 把版本改为 2.7.14 引入这两个依赖: 配置 application.yml文件 Config 类 : RabbitMQConfig 测试类: RabbitMQConfigTests 结果 当我们启动 测试类 之后就可以发现我们的 rabbitmq 界面里的

    2024年02月10日
    浏览(38)
  • 单个springboot整合rabbitmq

    rabbitmq是一种消息中间件,是基于erlang语言开发的AMQP(高级消息队列协议)的开源实现。 本质是个队列,FIFO先入先出。 1.1.1 rabbitmq特性: 开源,性能优秀,稳定保障 提供可靠的消息投递模式,返回模式 于Spring AMQP完美整合,API丰富 集群模式丰富 高可用 1.1.2 rabbitmq主要结构 生产

    2024年02月10日
    浏览(65)
  • SpringBoot整合RabbitMQ(基础)

    一.环境准备 1、在pom文件中引入对应的依赖: 2、在application.yml配置文件中配置RabbitMQ: 二、整合 点对点,简单模式 ①配置文件中声明队列 ②创建生产者 消息发送成功后,在web管理页面查看: 可以看到对应队列中产生了消息 ③创建消费者 启动项目,可以看到消息成功消费:

    2024年02月11日
    浏览(37)
  • SpringBoot整合RabbitMQ

    🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,计算机系列(火速更新中) 💭 格言:种一棵树最好的时间是十年前,其次是现在 🏡动动小手,点个关注不迷路,感

    2024年02月21日
    浏览(45)
  • SpringBoot 整合RabbitMQ

    2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出

    2024年02月15日
    浏览(52)
  • RabbitMQ整合Springboot

    目录 一、配置 二、使用 (1)创建普通交换机 (2) 创建普通队列 (3)绑定 交换机--队列 (4)创建带有死信交换机的队列 (5)生产者 (6)消费者 (7)Message对象 (8)延时队列优化(死信实现延时,有缺陷) 三、Rabbitmq插件实现延迟队列(重点) 四、发布确认 (1)确认回调

    2024年02月15日
    浏览(41)
  • SpringBoot整合实现RabbitMQ

    本文大纲 一.RabbitMQ介绍 二.RabbitMQ的工作原理 2.1 RabbitMQ的基本结构 2.2 组成部分说明 2.3 生产者发送消息流程 2.4 消费者接收消息流程 三.SpringBoot 整合实现RabbitMQ 3.1创建mq-rabbitmq-producer(生产者)发送消息 3.1.1pom.xml中添加相关的依赖 3.1.2 配置application.yml 3.1.3 配置RabbitMQ常量类

    2024年02月17日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包