RabbitMQ核心概念及工作流程 + AMQP

文章目录

  • [一. RabbitMQ核心概念](#一. RabbitMQ核心概念)
    • [1. Producer, Consumer, Broker](#1. Producer, Consumer, Broker)
    • [2. Connection和Channel](#2. Connection和Channel)
    • [3. Virtual host](#3. Virtual host)
    • [4. Queue](#4. Queue)
    • [5. Exchange](#5. Exchange)
  • [二. RabbitMQ的工作流程](#二. RabbitMQ的工作流程)
  • [三. AMQP](#三. AMQP)
  • [四. web界面操作](#四. web界面操作)

一. RabbitMQ核心概念

RabbitMQ是⼀个消息中间件, 也是⼀个⽣产者消费者模型. 它负责接收, 存储并转发消息

1. Producer, Consumer, Broker

  • Producer: ⽣产者, 是RabbitMQ Server的客⼾端, 向RabbitMQ发送消息
  • Consumer: 消费者, 也是RabbitMQ Server的客⼾端, 从RabbitMQ接收消息
  • Broker :其实就是RabbitMQ Server, 主要是接收和收发消息

2. Connection和Channel

  • Connection: 连接. 是客⼾端和RabbitMQ服务器之间的⼀个TCP连接. 这个连接是建⽴消息传递的基础, 它负责传输客⼾端和服务器之间的所有数据和控制信息.
  • Channel: 通道, 信道. Channel是在Connection之上的⼀个抽象层. 在 RabbitMQ 中, ⼀个TCP连接可以有多个Channel, 每个Channel 都是独⽴的虚拟连接. 消息的发送和接收都是基于 Channel的.

通道的主要作⽤是将消息的读写操作复⽤到同⼀个TCP连接上,这样可以减少建⽴和关闭连接的开销,

提⾼性能.

3. Virtual host

  • Virtual host: 虚拟主机. 这是⼀个虚拟概念. 它为消息队列提供了⼀种逻辑上的隔离机制. 对于RabbitMQ⽽⾔, ⼀个 BrokerServer 上可以存在多个 Virtual Host. 当多个不同的⽤⼾使⽤同⼀个RabbitMQ Server 提供的服务时,可以虚拟划分出多个 vhost,每个⽤⼾在⾃⼰的 vhost 创建exchange/queue 等

类似MySQL的"database", 是⼀个逻辑上的集合. ⼀个MySQL服务器可以有多个database.

4. Queue

  • Queue: 队列, 是RabbitMQ的内部对象, ⽤于存储消息.
    多个消费者, 可以订阅同⼀个队列

5. Exchange

  • Exchange: 交换机. message 到达 broker 的第⼀站, 它负责接收⽣产者发送的消息, 并根据特定的规则把这些消息路由到⼀个或多个Queue列中.
    Exchange起到了消息路由的作⽤,它根据类型和规则来确定如何转发接收到的消息.

类似于发快递之后, 物流公司怎么处理呢, 根据咱们的地址来分派这个快递到不同的站点, 然后再送到

收件⼈⼿⾥. 这个分配的⼯作,就是交换机来做的

二. RabbitMQ的工作流程

  1. Producer ⽣产了⼀条消息
  2. Producer 连接到RabbitMQBroker, 建⽴⼀个连接(Connection),开启⼀个信道(Channel)
  3. Producer 声明⼀个交换机(Exchange), 路由消息
  4. Producer 声明⼀个队列(Queue), 存放信息
  5. Producer 发送消息⾄RabbitMQ Broker
  6. RabbitMQ Broker 接收消息, 并存⼊相应的队列(Queue)中, 如果未找到相应的队列, 则根据⽣产者的配置, 选择丢弃或者退回给⽣产者.

如果我们把RabbitMQ⽐作⼀个物流公司,那么它的⼀些核⼼概念可以这样理解:

  1. Broker就类似整个物流公司的总部, 它负责协调和管理所有的物流站点, 确保包裹安全、⾼效地送达.
  2. Virtual Host可以看作是物流公司为不同的客⼾或业务部⻔划分的独⽴运营中⼼. 每个运营中⼼都有⾃⼰的仓库(Queue), 分拣规则(Exchange)和运输路线(Connection和Channel), 这样可以确保不同客⼾的包裹处理不会相互⼲扰, 同时提供定制化的服务
  3. Exchange就像是站点⾥的分拣中⼼. 当包裹到达时, 分拣中⼼会根据包裹上的标签来决定这个包裹应该送往哪个⽬的地(队列). 快递站点可能有不同类型的分拣中⼼, 有的按照具体地址分拣, 有的将包裹复制给多个收件⼈等.
  4. Queue就是快递站点⾥的⼀个个仓库, ⽤来临时存放等待派送的包裹. 每个仓库都有⼀个或多个快递员(消费者)负责从仓库中取出包裹并派送给最终的收件⼈.
  5. Connection就像是快递员与快递站点之间的通信线路. 快递员需要通过这个线路来接收派送任务(消息).
  6. Channel就像是快递员在执⾏任务时使⽤的多个并⾏的通信线路. 这样,快递员可以同时处理多个包裹, ⽐如⼀边派送包裹, ⼀边接收新的包裹

三. AMQP

AMQP(Advanced Message Queuing Protocol)是⼀种⾼级消息队列协议, AMQP定义了⼀套确定的消息交换功能, 包括交换器(Exchange), 队列(Queue) 等. 这些组件共同⼯作, 使得⽣产者能够将消息发送到交换器. 然后由队列接收并等待消费者接收. AMQP还定义了⼀个⽹络协议, 允许客⼾端应⽤通过该协议与消息代理和AMQP模型进⾏交互通信

RabbitMQ是遵从AMQP协议的,换句话说,RabbitMQ就是AMQP协议的Erlang的实现(当然RabbitMQ还⽀持STOMP2, MQTT2等协议). AMQP的模型结构和RabbitMQ的模型结构是⼀样的.

四. web界面操作

对用户操作

  1. 添加用户
  2. 删除用户
    点击用户名

  3. 对虚拟机的权限操作
  4. 退出当前用户

对虚拟机操作

  1. 创建虚拟主机
  2. 删除虚拟机

  3. 修改用户权限
相关推荐
bug_null2 小时前
RabbitMQ消息可靠性保证机制7--可靠性分析-rabbitmq_tracing插件
分布式·rabbitmq
kingbal2 小时前
RabbitMQ:添加virtualHost
分布式·rabbitmq
小马爱打代码3 小时前
SpringCloud(注册中心+OpenFeign+网关+配置中心+服务保护+分布式事务)
分布式·spring·spring cloud
BUTCHER55 小时前
Kafka安装篇
分布式·kafka
04Koi.7 小时前
Java项目--仿RabbitMQ的消息队列--虚拟主机设计
分布式·rabbitmq
若雨叶9 小时前
Kafka实现监听多个topic
分布式·kafka
HaoHao_0109 小时前
云消息队列 Kafka 版
分布式·阿里云·kafka·云计算·云服务器
中东大鹅10 小时前
分布式数据存储基础与HDFS操作实践
大数据·linux·hadoop·分布式·hbase
04Koi.13 小时前
Java项目--仿RabbitMQ的消息队列--网络通信协议设计
分布式·rabbitmq
大饼酥14 小时前
保姆级教程Docker部署RabbitMQ镜像
docker·容器·rabbitmq