RabbitMQ基础核心概念

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

目标:

了解RabbitMQ的核心概念


学习步骤:

1、模型概念
2、Producer (生产者) 、 Consumer(消费者)
3、Exchange (交换机)
4、Queue (消息队列)
5、Broker(服务节点)
6、RabbitMQ的五种工作模式

一、模型概念

RabbitMQ基础核心概念

说白了,RabbitMQ 就是一个生产者与消费者模型,其功能主要是【接收、存储和转发消息】,也可以称为一个使用队列来通信的组件。

二、 Producer(生产者) 、 Consumer(消费者)

Producer(生产者) :顾名思义是生产消息的一方
Consumer(消费者) :顾名思义是消费消息的一方

而消息一般由 俩部分组成:消息头(标签 Label)和 消息体(payload)。

消息体也叫 payLoad ,其内容是不外传的。
而消息头则由一系列的可选属性组成,这些属性包括

  • routing-key(路由键)
  • priority(优先级)
  • delivery-mode(用于做消息持久化)。

Producer 把消息交由 RabbitMQ 后,RabbitMQ 会根据消息头把消息发送给合适的 Consumer

三、Exchange(交换机)

生产者发送的消息都需要经过交换机才能到达合适的消费者,且交换机只负责转发消息,不具备存储消息的能力,假设没有任何队列与交换机绑定,或者没有符合路由规则的队列,发的消息就很可能会丢失。

说细节一点的话就是 Exchange用来接收生产者发送的消息并将这些消息路由给服务器中的队列中,如果找不到对应的路由

  • 情况一是:消息返回给 Producer。
  • 情况二是:消息直接被丢弃掉 。

关于Exchange 有4种类型,不同的类型对应着不同的路由策略,分别是:

RabbitMQ基础核心概念

  • direct (定向,也叫路由模式 - 默认)

    • 交换机 会把消息 路由到那些 Bindingkey 与 RoutingKey 完全匹配的 Queue 中
    • 应用场景:direct 类型常用在处理有优先级的任务,根据任务的优先级把消息发送到对应的队列,这样可以指派更多的资源去处理高优先级的队列。
      RabbitMQ基础核心概念
  • fanout (广播,也称订阅模式)

    • 交换机 会把所有发送到该 Exchange的消息 路由到所有与它绑定的Queue中,fanout 类型是所有的交换机类型里面速度最快的
      RabbitMQ基础核心概念
  • topic (通配)

    • topic类型的交换机在匹配规则上进行了扩展,RoutingKey 为一个点号“.”分隔的字符串,BindingKey 也是点号“.”分隔的字符串
    • BindingKey 中有两种特殊字符串*#,用于模糊匹配,其中*用于匹配一个单词,#用于匹配零个或多个单词
      RabbitMQ基础核心概念
  • headers (参数匹配)

    • 它不依赖于路由键的匹配规则来路由消息 ,而是根据发送的消息内容中的 headers 属性进行匹配
    • 它在绑定队列和交换机时指定一组键值对,当发送消息到交换机时,RabbitMQ会获取到该消息的 headers,对比其中的键值对是否完全匹配队列和交换机绑定时指定的键值对,如果完全匹配则消息会路由到该队列,否则不会路由到该队列
    • headers 类型的交换机性能很差,不太实用
注:BindingKey 并不是在所有的情况下都生效,它依赖于交换机类型,比如 fanout类型的交换机就会无视(路由键为空字符串),将消息路由到所有绑定到该交换机的队列中

四、Queue(消息队列)

Queue 是用来保存消息 发送给消费者的一个消息容器(内部对象)。一个消息可投入一个或多个队列。消息会一直待在队列里,等待消费者连接到这个队列将消息取走

五、Broker(服务节点)

一个broker 其实就是相当于一个RabbitMQ服务实例。

六、RabbitMQ的五种工作模式

1、简单模式

RabbitMQ基础核心概念

2、work 工作模式

RabbitMQ基础核心概念
RabbitMQ基础核心概念

3、pub/sub 发布订阅模式

RabbitMQ基础核心概念

4、Routing 路由模式

RabbitMQ基础核心概念

5、Topic 通配模式

RabbitMQ基础核心概念

五种工作模式总结

RabbitMQ基础核心概念文章来源地址https://www.toymoban.com/news/detail-407429.html

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

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

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

相关文章

  • 深入了解目标检测技术--从基本概念到算法入门

    前言: Hello大家好,我是Dream。 众所周知,目标检测是计算机视觉领域中的重要任务之一,其目的是 识别图像或视频中包含的物体实例并将其定位 。实现目标检测可以帮助人们在 自动驾驶、机器人导航、安防监控 等领域中更好地理解和应用图像信息。接下来Dream将带大家一

    2024年02月03日
    浏览(36)
  • 【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

    权限框架是软件开发中用于管理 用户权限和访问控制 的工具。在企业或者我们毕设复杂的系统中,不同的用户或角色需要拥有不同的访问和操作权限,以确保系统的安全性和数据完整性。今天我们就讨论一下Java中的安全框架! 在企业的开发中,Spring Security,Shiro都是比较流

    2024年04月16日
    浏览(40)
  • Kafka基础架构与核心概念

    Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。架构特点是分区、多副本、多生产者、多订阅者,性能特点主要是高吞吐,低时延。 Kafka主要设计特征如下

    2024年02月15日
    浏览(48)
  • TCP基础概念了解

    TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它完成第四层传输层所指定的功能。 TCP 协议的特点是: 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的。 可靠交付

    2024年02月04日
    浏览(42)
  • RabbitMQ基础概念-02

    RabbitMQ是基于AMQP协议开发的一个MQ产品, 首先我们以Web管理页面为 入口,来了解下RabbitMQ的一些基础概念,这样我们后续才好针对这些基础概念 进行编程实战。 可以参照下图来理解RabbitMQ当中的基础概念: 虚拟主机 virtual host 这个在之前搭建时已经体验过了。RabbitMQ出于服务

    2024年02月07日
    浏览(31)
  • RabbitMq-1基础概念

    mq:消息队列,存储消息的中间件 分布式系统通信的两种方式:直接远程调用,借助第三方完成间接通信 消息的发送方是生产者,接收方为消费者 优势:应用解耦,异步提速,削峰填谷 劣势:系统可用性降低,系统复杂度提高,一致性问题 应用解耦 异步提速 削峰填谷 使用

    2024年02月12日
    浏览(33)
  • 初识网络 --- 浅了解一些基础概念

    在每台计算机独立的情况下:假设现在有三台计算机,每台计算机各持有一个业务。那么现在有个程序员处理业务时,如果想要处理业务1就要操作计算机1,处理业务2就要操作计算机2,这样的效率明显不高 那么如果能将三台计算机都连接到一台服务器中,那么三台计算机就

    2024年02月11日
    浏览(39)
  • Node基础概念,先了解一下

    Nodejs是基于Chrome V8引擎的服务器端JavaScript运行环境,也就是说可以在浏览器之外的主机上运行JavaScript。 Nodejs有三部分组成:标准库、中间层和底层库。 标准库:是给开发人员直接调用的API,比如HTTP模块; 中间层:为什么要有中间层呢?主要是因为NodeJS底层采用C语言来实现

    2024年02月07日
    浏览(36)
  • 【ES】Elasticsearch核心基础概念:文档与索引

    es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Document和Index的时候会使用到。 当我们把es服务器启动起来之后,要怎么调用呢?

    2024年02月05日
    浏览(49)
  • WebRTC入门:基础的核心协议与概念(二十三)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 优质专栏: 多媒体系统工程师系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径

    2024年01月17日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包