RabbitMQ 基础介绍

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

RabbitMQ 基础介绍

TL;DR

RabbitMQ 是一个默认基于 AMQP 协议的消息队列系统,本文解释介绍 RabbitMQ 的基础概念、数据传输机制和流程,帮助快速了解 RabbitMQ 和进行相关开发。本文重点在解释什么是 RabbitMQ、RabbitMQ 是如何运行的。至于为什么使用消息队列?为什么使用 RabbitMQ?请参考其他文章。

概念

  • Producer (生产者): 发送消息的应用。
  • Consumer (消费者): 接收消息的应用。
  • Queue (队列): 存储消息的缓冲区。
  • Message (消息): Producer 通过 RabbitMQ 发送给 Consumer 的信息。
  • Connection (连接): 应用和 RabbitMQ 之间的 TCP 连接。
  • Channel (通道): 连接内部的虚拟连接,当发送或接收 Queue 中的消息时,都是通过通道完成的。
  • Exchange (交换机): 根据 Producer 定义的消息类型规则,接收来自 Producer 的消息并将消息推送到 Queue 中。Exchange 至少要 Binding 一个 Queue,否则默认情况下消息会被丢弃。
  • Binding (绑定): Binding 是 Queue 和 Exchange 之间的连接。
  • Routing key (路由键): Producer 可以发送的额外参数,Exchange 用来确定如何将消息路由到 Queue。
  • AMQP (高级消息 Queue 协议): RabbitMQ 默认的消息协议。
  • Users (用户): RabbitMQ 用户,拥有账号密码、权限、Vhost 权限等。
  • Vhost (虚拟机): 在同一 RabbitMQ 中隔离应用程序的机制。Queue 和 Exchange 存在于虚拟机中,用户可以拥有一个或多个虚拟机权限。

PUB/SUB 流程

简要概括

  • Producer 负责推送消息到 Exchange
  • Consumer 负责消费 Queue 的消息
  • Exchange 负责路由消息到 Queue
  • Queue 负责存储消息等待消费

详细说明

Producer (生产者客户端):

  1. 创建一个 TCP 连接到 RabbitMQ
  2. 创建一个 Channel 用来发送消息
  3. 发送消息到 Exchange

Consumer (消费者客户端):

  1. 创建一个 TCP 连接到 RabbitMQ
  2. 创建一个 Channel 用来接收消息
  3. 向 RabbitMQ Broker 申明创建一个 Exchange
  4. 向 RabbitMQ Broker 申明绑定一个 Queue 到 Exchange
  5. 监听消费 Queue 中的消息

RabbitMQ Broker (RabbitMQ 服务端):

  1. 从 Consumer 接收申明指令创建 Exchange 和 绑定 Queue 到 Exchange
  2. Exchange 从 Producer 接收消息,路由到 Queue

Queue 参数解析

  • Name 名称
  • Durable 是否在 RabbitMQ 重启之后存在
  • Exclusive 在只有一个连接的时候使用,并且 Queue 会在连接断开的时候删除
  • Auto-delete 如果是 yes,Queue 将在最后一个 Consumer 取消、断开、消失的时候自动删除
  • Arguments 可选,用于一些插件和 RabbitMQ 的功能所使用的参数

Queue 的类型

  • Classic 常规类型
  • Quorum 新的队列类型,适用于对数据安全、容错方面要求高于低延迟等其他特性的场景。

Quorum queues are purpose built by design. They are not designed to be used for every problem. Their intended use is for topologies where queues exist for a long time and are critical to certain aspects of system operation, therefore fault tolerance and data safety is more important than, say, low latency and advanced queue features.

Exchange 参数解析

  • Name 名称
  • Type 类型
  • Durability 是否在 RabbitMQ 重启之后存在
  • Auto-delete 是否在最后一个绑定的 Queue 解绑的时候删除
  • Arguments 可选,用于一些插件和 RabbitMQ 的功能所使用的参数
  • Internal: 默认 false,如果是 yes 则 Exchange 只能够在绑定的 Exchange 之间传递消息

Exchange 的类型

  • Direct: 消息的 Routing key 和 Queue 的 Binding key 匹配一致, 消息会路由到对应的 Queue 中。
  • Fanout: Fanout 模式的 Exchange 会发送消息给所有绑定的 Queue。
  • Topic: Topic 模式的 Exchange 会对 Routing key 进行设定好的路由规则验证,路由消息到指定的一个或多个 Queue 中。
  • Headers: 使用 Message header 的属性来作为路由参数。

常见问题

Q:推送消息的时候如何保证有对应的 Exchange 和 Queue?

A:Producer 和 Consumer 客户端处理这种问题的时候,双方都会向 RabbitMQ Broker 申明创建 Exchange 和 Queue 以保证消息传输过程通达。

Q:如何选择合适的模式?

A:在了解完 RabbitMQ Exchange 的特性之后,我们可以参考一些最佳实践来选择符合我们使用场景的类型。目前比较符合我们微服务结构下的 PUB/SUB 机制的类型是 Exchange Fanout。为什么选用这个模式,是因为这种类型的申明字段结构比较清晰,不容易因为复杂的路由规则而犯错,而且符合我们对 PUB/SUB 机制的理解。文章来源地址https://www.toymoban.com/news/detail-775203.html

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

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

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

相关文章

  • 【图解RabbitMQ-5】RabbitMQ Web管控台图文介绍

    🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······ 😎人生感悟:尝尽人生百味,方知世间冷暖。

    2024年02月09日
    浏览(27)
  • 【RabbitMQ笔记10】消息队列RabbitMQ之死信队列的介绍

    这篇文章,主要介绍消息队列RabbitMQ之死信队列。 目录 一、RabbitMQ死信队列 1.1、什么是死信队列 1.2、设置过期时间TTL 1.3、配置死信交换机和死信队列(代码配置) (1)设置队列过期时间 (2)设置单条消息过期时间 (3)队列设置死信交换机 (4)配置的基本思路 1.4、配置

    2024年02月16日
    浏览(49)
  • 3.精通RabbitMQ—基础 RabbitMQ知识、进阶 RabbitMQ知识

    RabbitMQ面试题 (总结最全面的面试题) 入门RabbitMQ消息队列,看这篇文章就够了 消息队列 是一种基于 队列 ,用于解决 不同进程或应用 之间 通讯 的 消息中间件 。 支持多种 消息传递模式 ,如 队列模型 、 发布/订阅模型 等。 业务解耦 :通过 发布/订阅 模式,减少系统的 耦

    2024年02月16日
    浏览(31)
  • rabbitMq介绍及使用

    点击跳转https://blog.csdn.net/qq_43410878/article/details/123656765

    2024年02月10日
    浏览(24)
  • RabbitMQ系列-Exchange介绍

    RabbitMQ系列 RabbitMQ系列-概念及安装       RabbitMQ系列-概念及安装 提到AMQP 0-9-1协议默认支持四种exchange,分别是 Direct Exchange , Fanout Exchange , Topic Exchange , Headers Exchange 除了交换类型之外,交换还声明了许多属性 Name,交换机名称,唯一的 Durability,持久性,RabbitMQ Server重启

    2024年02月06日
    浏览(28)
  • RabbitMQ 工作模式介绍

    RabbitMQ 是一个消息代理:它接受并转发消息。您可以将其视为邮局:当您将要邮寄的邮件放入邮箱时,您可以确定信使最终会将邮件交付给您的收件人。在这个类比中,RabbitMQ是一个邮政信箱,一个邮局和一个信件载体。 RabbitMQ 和邮局之间的主要区别在于它不处理纸张,而是

    2024年02月06日
    浏览(32)
  • 消息队列之RabbitMQ介绍

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 消息队列之RabbitMQ介绍 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 在当今的分布式系统和微服务架构中,消息队列扮演着至关

    2024年01月18日
    浏览(26)
  • rabbitmq的介绍、使用、案例

    rabbitmq简单来说就是个消息中间件,可以让不同的应用程序之间进行异步的通信,通过消息传递来实现解耦和分布式处理。 消息队列:允许将消息发到队列,然后进行取出、处理等操作,使得生产者和消费者之间能够解耦,异步地进行通信。 持久性,可靠性的消息传递机制。

    2024年01月20日
    浏览(40)
  • RabbitMQ的介绍

    流量削峰和缓冲 如果订单系统最多能处理一万次订单,这个处理能力在足够应付正常时段的下单,但是在高峰期,可能会有两万次下单操作,订单系统只能处理一万次下单操作,剩下的一万次被阻塞。我们可以使用消息队列做缓冲,取消这个限制,把一秒内下的订单分散成一

    2024年04月14日
    浏览(14)
  • RabbitMQ介绍及搭建

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,使用erlang语言编写,依赖Erlang环境运行。 Broker:运行消息队列服务进程的节点,包含Exchange、Queue; Producer:消息生产者; Consumer:消息消费者; Server:AMQP实例,接收客户端的连接; Connection:连接,应用程序与

    2024年04月11日
    浏览(80)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包