3.RabbitMQ 架构以及 通信方式

这篇具有很好参考价值的文章主要介绍了3.RabbitMQ 架构以及 通信方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、RabbitMQ的架构

RabbitMQ的架构可以查看官方地址
3.RabbitMQ 架构以及 通信方式,RabbitMQ从入门到实战,rabbitmq,架构,分布式
3.RabbitMQ 架构以及 通信方式,RabbitMQ从入门到实战,rabbitmq,架构,分布式
可以看出RabbitMQ中主要分为三个角色:

  • Publisher:消息的发布者,将消息发布到RabbitMQ中的Exchange
  • RabbitMQ服务:Exchange接收Publisher的消息,并且根据Routes策略将消息转发到Queue中
  • Consumer:消息的消费者,监听Queue中的消息并进行消费
  • Routes:就是我们下面说的 Routing Key

RabbitMQ发送消息的策略是,消息到达Exchange,然后根据 RoutingKey 去配置到 Queue,然后消费者监听queue来完成消费

二、AMQP概念

RabbitMq是基于AMQP协议的。

1.什么是AMQP协议

3.RabbitMQ 架构以及 通信方式,RabbitMQ从入门到实战,rabbitmq,架构,分布式

  1. server:又称Broker,接收客户端连接,实现AMQP实体服务
  2. Connection: 连接,应用程序与Broker的网络连接
  3. Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务。
  4. Virtual Host :虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual host里面可以有若干个Exchange和Queue,同一个Virtual host 里面不能有相同名称的Exchange或Queue,可以理解为 Mysql中的 db概念,不同的用户可以管理不同的 Virtual Host,默认是 / 目录,也可以在 管理页面上 创建 Virtual Host 并指定给相应的用户,或者在命令行中创建和设置用户。
  5. ExChange:交换机,接收消息,根据路由键转发消息到绑定的队列
  6. Binding:Exchange和Queue之间的虚拟连接,binding中可以包含routing key(路由键)
  7. Routing key:一个路由规则,虚拟机可用它来确定如何路由一个特定消息
  8. Queue:也称为Message Queue,消息队列,保存消息并将它们转发给消费者
  9. Message:消息,服务器和应用程序之间传送的数据,由Properties和Body组成,Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容

二、ExChange详解

  1. Name:交换机名称
  2. Type:RabbitMQ中交换机的类型有 direct(直接) 、topic(主题)、fanout(广播)、headers(标题)
  3. Durability:交换机是否需要持久化,true为持久化。
  4. Auto Delete:当最好一个绑定到Exchange上的队列删除后,自动删除Exchange。
  5. Internal:当前Exchange是否用于RabbitMQ内部使用,默认False
  6. Arguments:扩展参数,用户扩展AMQP协议自制定化使用

三、Queue详解

  1. name:队列的名称
  2. durable:是否是持久化队列
  3. autoDelete:当最后一个消息不在了,是否自动删除队列,默认false。

三、RabbitMQ通讯的方式

RabbitMQ通讯方式 是依赖于 Exchange的类型的。

3.1 direct类型交换机

所有发送到Direct Exchange的消息被转发到RouteKey中指定的Queue

注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃

注意:Direct模式可以使用RabbitMQ自带的Exchange:default
Exchange,所以不需要将Exchange进行任何绑定操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃

3.RabbitMQ 架构以及 通信方式,RabbitMQ从入门到实战,rabbitmq,架构,分布式

3.2 fanout类型交换机

  1. 不处理Routing Key,只需要简单的将队列绑定到交换机上
  2. 发送到交换机的消息都会被转发到与该交换机绑定的所有队列上
  3. Fanout交换机转发消息是最快的
    3.RabbitMQ 架构以及 通信方式,RabbitMQ从入门到实战,rabbitmq,架构,分布式

3.3 topic类型交换机

所有发送到Topic Exchange的消息被转发到所有关心RouteKey中指定Topic的Queue上

Exchange将RouteKey和某个Topic进行模糊匹配,此时队列需要绑定一个Topic

注意:可以使用通配符进行模糊匹配

  • 符号 # 匹配一个或多个词
  • 符号 * 只匹配一个词
  • 例如:log.# 能够匹配到 log.info.a、log.info.c、log.info
  • log.* 只能匹配到 log.info 。

3.RabbitMQ 架构以及 通信方式,RabbitMQ从入门到实战,rabbitmq,架构,分布式

3.4 headers类型交换机

上面的三种都是通过 Routing Key来进行匹配的,而headers是通过消息的header来进行匹配的。
3.RabbitMQ 架构以及 通信方式,RabbitMQ从入门到实战,rabbitmq,架构,分布式
headers头部的 x-match 参数是 必须的,如果x-match设置的是all,那么生产者在生产消息时必须满足设置的headers条件,
我上面设置的是 x-match=all ,name=jack,age=23,那么我想发送消息到这个队列里面,那么消息头必须要有 name=jack,age=23。
如果我设置的是 x-match=any ,那么我满足其中一个条件就好了,比如上面是 name = jack,age= 23,那么我消息头带其中的一个就可以了,也就是他们两个的任意一个。
如果不满足的话,消息无法到达exchange绑定的queue中。文章来源地址https://www.toymoban.com/news/detail-670664.html

到了这里,关于3.RabbitMQ 架构以及 通信方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • RabbitMQ入门实战

    RabbitMQ 是一个开源的消息中间件,实现了高级消息队列协议(AMQP),用于在分布式系统中进行消息传递。它能够在应用之间传递消息,解耦应用组件,提高系统的可伸缩性和可维护性。RabbitMQ 使用高级消息队列协议(AMQP),这是一种开放的、标准化的协议,定义了消息格式

    2024年01月22日
    浏览(23)
  • RabbitMQ入门到实战——高级篇

    消息的可靠性 生产者重连 这⾥除了enabled是false外,其他 initial-interval 等默认都是⼀样的值。 生产者确认  生产者确认代码实现 application中增加配置:(publisher-returns ⼀般不⽤配置)  2. 在RabbitTemplate中设置回调函数 ReturnCallback ,在Rabbit发送信息失败时触发(如果开了 publi

    2024年01月18日
    浏览(38)
  • RabbitMQ入门到实战——基础篇

    初识RabbitMQ:高性能异步通讯组件   场景:1.对结果不关心时异步。订单状态-异步,查询-同步 2.影响性能。调用链超长,可改成异步  kafka日志收集     交换机只负责路由消息,没有消息保存能⼒ 发信息前,queue需要binding绑定交换机 给每个项目创建自己的用户user和虚拟主机

    2024年01月23日
    浏览(52)
  • RabbitMQ从入门到精通之安装、通讯方式详解

    1.1 现存问题 服务异步调用: 服务A如何保证异步请求一定能被服务B接收到并处理 削峰: 海量请求,如何实现削峰的效果,将请求全部放到一个队列中,慢慢的消费,这个队列怎么实现? 服务解耦: 如何尽量的降低服务之间的耦合问题,如果在订单与积分和商家服务解构,需

    2024年02月09日
    浏览(45)
  • rabbitmq入门(一)——创建用户以及分配vhost

    在实际的开发过程中,一般会存在多个人公用一个rabbitmq服务,这个时候为了避免相互影响,我们需要创建一个虚拟主机;每一个虚拟主机可以看作一个数据库,是独立分开互不影响的。 一般我们项目连接rabbitmq是用的5672端口,而默认的rabbitmq的后台管理的访问地址是:http:/

    2024年02月15日
    浏览(43)
  • RabbitMQ篇——一篇文章带你入门RabbitMQ,了解RabbitMQ的角色分类权限、AMQP协议以及设计第一个RabbitMQ程序!

    RabbitMQ是一个开源的消息代理和消息队列系统,采用AMQP(Advanced Message Queuing Protocol)协议。它被设计用于在分布式系统中进行高效,可靠和可扩展的消息传递。 RabbitMQ基本概念: Producer(生产者):生产者负责发布消息到消息队列中。 Consumer(消费者):消费者从消息队列中

    2024年01月16日
    浏览(56)
  • rabbitMQ入门指南:管理页面全面指南及实战操作

      在前一篇文章在centos stream 9环境中部署和使用rabbitMQ,我们已经详细介绍了如何在CentOS下安装和配置RabbitMQ,我们不仅启动了RabbitMQ服务,还通过插件安装了管理后台,并且登陆到管理页面。   RabbitMQ管理后台提供了一个直观的用户界面,允许我们查看和管理RabbitMQ服务器

    2024年02月12日
    浏览(50)
  • RabbitMQ入门到实战一篇文章就够了

    课程内容 认识RabbitMQ 安装RabbitMQ SpringBoot使用RabbitMQ 其他特性 1.RabbitMQ认识 1.1.RabbitMQ是什么 MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程

    2024年03月09日
    浏览(50)
  • 15年大牛用140多个实战案例深入讲解Java微服务架构实战:SpringBoot +SpringCloud +Docker +RabbitMQ

    第一部分,springboot篇; 第1章SpringBoot编程起步; 1.SpringBoot提倡的是一种简洁的开发模式,可保证用户不被大量的配置文件和依赖关系所困扰。 2.SpringBoot开发需要Maven或 Gradle构建工具支持。 3.SpringBoot使用一系列的注解来简化开发过程。 第2章SpringBoot程序开发; 1. SpringBoot的依赖

    2024年04月09日
    浏览(51)
  • kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ consumer实战

    1、上一节课我们学习了MQTT producer 生产者步骤,MQTT consumer消费者步骤。该步骤可以从支持MRQTT协议的中间件获取数据,该步骤和kafka consumer 一样可以处理实时数据交互,如下图所示:  2、双击步骤打开MQTT consumer 配置窗口,如下图所示: Step name: 自定义步骤名称。 Transformat

    2024年04月28日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包