当前位置: 首页 > news >正文

什么是RabbitMQ?

什么是RabbitMQ?

  • 一、什么是RabbitMQ?
  • 二、Rabbitmq 的使用场景?
  • 三、RabbitMQ基本概念
  • 四、RabbitMQ的工作模式
        • 1. **简单队列模式(Simple Queue)**
        • 2. **工作队列模式(Work Queue)**
        • 3. **发布/订阅模式(Publish/Subscribe)**
        • 4. **路由模式(Routing)**
        • 5. **主题模式(Topics)**
        • 6. **RPC模式(Remote Procedure Call)**


一、什么是RabbitMQ?

RabbitMQ是一个开源的消息代理(Message Broker)软件,实现了高级消息队列协议(AMQP)。它用于在分布式系统中存储、转发消息,支持异步通信,帮助解耦生产者和消费者,提高系统的可扩展性和可靠性。


二、Rabbitmq 的使用场景?

(1)服务间异步通信
(2)顺序消费
(3)定时任务
(4)请求削峰

三、RabbitMQ基本概念

Broker: 简单来说就是消息队列服务器实体
Exchange: 消息交换机,它指定消息按什么规则,路由到哪个队列
Queue: 消息队列载体,每个消息都会被投入到一个或多个队列
Binding: 绑定,它的作用就是把exchange和queue按照路由规则绑定起来
Routing Key: 路由关键字,exchange根据这个关键字进行消息投递
VHost: vhost 可以理解为虚拟 broker ,即 mini-RabbitMQ server。其内部 均含有独立的 queue、exchange 和 binding 等,但最最重要的是,其拥有独立的 权限系统,
可以做到 vhost 范围的用户控制。当然,从 RabbitMQ 的全局角度, vhost 可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同 的 vhost 中)。
Producer: 消息生产者,就是投递消息的程序
Consumer: 消息消费者,就是接受消息的程序
Channel: 消息通道,在客户端的每个连接里,可建立多个channel,每个 channel代表一个会话任务

由Exchange、Queue、RoutingKey三个才能决定一个从Exchange到Queue的 唯一的线路。

四、RabbitMQ的工作模式

1. 简单队列模式(Simple Queue)
  • 解释:这是最基本的模式。生产者直接将消息发送到队列,消费者从队列中接收消息。适用于一对一的简单通信场景,没有复杂的路由逻辑。
  • 流程图描述
    • 生产者发送消息到队列。
    • 队列存储消息。
    • 消费者从队列拉取消息。
    • 消息流:Producer → Queue → Consumer
    • 示例:生产者发送一条日志消息,消费者接收并处理。
2. 工作队列模式(Work Queue)
  • 解释:也称为任务队列模式。生产者发送消息到单一队列,多个消费者共享该队列,消息被分发到空闲消费者(轮询或公平分发)。适用于负载均衡场景,如处理耗时任务。
  • 流程图描述
    • 生产者发送消息到队列。
    • 队列存储消息。
    • 多个消费者(如Consumer1、Consumer2)竞争消费消息。
    • 消息流:Producer → Queue → {Consumer1, Consumer2, …}(分发机制)
    • 示例:生产者发送多个任务消息,多个工作线程并行处理。
3. 发布/订阅模式(Publish/Subscribe)
  • 解释:生产者将消息发送到交换器(fanout类型),交换器将消息广播到所有绑定的队列。每个队列有自己的消费者,实现一对多通信。适用于事件通知或广播场景。
  • 流程图描述
    • 生产者发送消息到交换器(fanout)。
    • 交换器广播消息到所有绑定的队列(如Queue1、Queue2)。
    • 每个队列有自己的消费者接收消息。
    • 消息流:Producer → Exchange (fanout) → Queue1 → Consumer1, Queue2 → Consumer2, …
    • 示例:生产者发布新闻更新,多个订阅者接收相同消息。
4. 路由模式(Routing)
  • 解释:使用direct交换器,生产者发送消息时指定路由键(routing key),交换器根据路由键将消息路由到匹配的队列。适用于需要精确路由的场景。
  • 流程图描述
    • 生产者发送消息到交换器(direct),并指定路由键(如"error")。
    • 交换器根据路由键匹配绑定键(binding key),将消息路由到对应队列。
    • 队列绑定到交换器时指定绑定键。
    • 消费者从队列接收消息。
    • 消息流:Producer → Exchange (direct) → Queue(基于路由键匹配) → Consumer
    • 示例:生产者发送不同日志级别(如"error"或"info")的消息,消费者只接收特定级别的消息。
5. 主题模式(Topics)
  • 解释:使用topic交换器,支持通配符匹配路由键(如"*.error")。生产者发送消息时指定主题路由键,交换器根据模式匹配将消息路由到队列。适用于灵活的路由需求,如分类消息。
  • 流程图描述
    • 生产者发送消息到交换器(topic),并指定主题路由键(如"system.error")。
    • 交换器根据通配符模式(如"* .error")匹配绑定键,将消息路由到符合条件的队列。
    • 队列绑定到交换器时指定绑定键模式。
    • 消费者从队列接收消息。
    • 消息流:Producer → Exchange (topic) → Queue(基于通配符匹配) → Consumer
    • 示例:生产者发送主题消息(如"order.created"),消费者订阅特定模式(如"order.*")接收消息。
6. RPC模式(Remote Procedure Call)
  • 解释:客户端(生产者)发送请求消息,并等待服务器(消费者)返回响应。使用回调队列和关联ID实现同步通信。适用于需要请求-响应交互的场景。
  • 流程图描述
    • 客户端发送请求消息到队列,消息中包含关联ID和回调队列地址。
    • 服务器从队列接收请求,处理任务。
    • 服务器发送响应消息到回调队列,使用相同关联ID。
    • 客户端从回调队列接收响应。
    • 消息流:Client → Request Queue → Server → Callback Queue → Client(双向流)
    • 示例:客户端发送计算请求,服务器处理并返回结果。
http://www.dtcms.com/a/318516.html

相关文章:

  • 基于单片机GD32E103的HID按键问题分析
  • 【网络运维】Linux:SELinux简介和配置
  • STM32U5 外部中断不响应问题分析
  • 【android bluetooth 协议分析 03】【蓝牙扫描详解 4】【BR/EDR扫描到设备后如何上报给app侧】
  • PHP 继承与静态机制深度解析
  • 防御保护综合练习
  • 北斗变形监测技术应用解析
  • HTTP Flood攻击:数字时代的“蝗虫灾害“与智能防护之道
  • AI推理新高度:Claude Opus 4.1如何解决复杂逻辑问题
  • SELinux 安全机制详解与管理
  • AI_提示词Prompt
  • 大模型后训练——Online-RL基础
  • Godot ------ 自定义布局以及自定义引擎风格
  • 8.6日作业
  • 五、Envoy集群管理
  • Redis Redis 常见数据类型
  • TFTP: Linux 系统安装 TFTP,文件系统启动后TFTP使用
  • Java 启动命令的完整解析
  • 【渲染流水线】[应用阶段]-[裁剪]以UnityURP为例
  • GeoTools 结合 OpenLayers 实现缓冲区分析
  • LINQ 要点
  • 92、【OS】【Nuttx】【构建】cmake 支持构建的目标
  • SOD-YOLO:增强基于YOLO的无人机影像小目标检测
  • Product Hunt 每日热榜 | 2025-08-06
  • GoogLeNet训练
  • FastDeploy2.0:Error reading file: SafeTensorError::MetadataIncompleteBuffer
  • chdir系统调用及示例
  • 【C/C++】形参、实参相关内容整理
  • 零基础-动手学深度学习-8.7. 通过时间反向传播
  • Spring_事务