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

RabbitMQ 基础概念与原理

RabbitMQ 基础概念与原理

在这里插入图片描述

1. 前言

RabbitMQ 是一个开源的消息队列系统,实现了 AMQP(Advanced Message Queuing Protocol)
它通过 生产者-消费者模式 将消息从生产端传递到消费端,解耦业务系统,实现异步处理、高可用和高并发。

本文将系统讲解 RabbitMQ 基础概念、核心架构、消息流转流程和可靠性机制,为后续源码解析与高可用、性能调优打基础。


2. 核心概念

概念说明
Producer(生产者)发送消息的应用程序或服务
Consumer(消费者)接收并处理消息的应用程序或服务
Queue(队列)消息存储的容器,保证 FIFO(先进先出)
Exchange(交换机)消息路由器,将消息投递到一个或多个队列
Routing Key(路由键)消息路由时的匹配规则
Binding(绑定)将交换机和队列关联,指定路由键
Virtual Host(VHost)虚拟环境隔离队列、交换机和权限
Connection & ChannelTCP 连接与轻量级通道,Channel 支持多路复用

3. RabbitMQ 架构概览

RabbitMQ 基于 Erlang/OTP 构建,具备高并发与分布式能力。
核心组件:

  1. Broker:核心服务器,管理 Queue、Exchange、Binding
  2. Erlang 进程:每个 Queue、Exchange、Channel 都是独立进程
  3. Message Store:内存队列或磁盘队列,用于消息持久化
  4. Clustering:多节点组成集群,支持 HA(High Availability)

架构图示

Producer ---> Exchange ---> Queue ---> Consumer\\---> Queue2 ---> Consumer2
  • Exchange 决定消息如何路由
  • Queue 存储消息,消费者从队列消费
  • 可通过 Binding 设置多个队列绑定到同一个交换机

4. AMQP 消息流转原理

4.1 消息发布流程

  1. Producer 通过 Channel 调用 basic.publish 发送消息
  2. Exchange 根据类型(Direct/Fanout/Topic/Headers)决定路由
  3. Exchange 查找绑定队列(Binding)
  4. Queue 接收消息并存储
  5. Consumer 从 Queue 拉取或被推送消息

4.2 消息确认机制

  • ACK/NACK:消费者确认消息已处理
  • Auto-ack:消息到达即确认
  • 手动确认:消费者处理完成后发送 basic.ack
  • 未确认消息:如果消费者挂掉,消息可以重新入队

5. RabbitMQ 内部源码概览

5.1 连接与通道

  • rabbit_connection:管理 TCP 连接
  • rabbit_channel:多路复用通道,每个 Channel 独立进程
  • 轻量化 Channel 可复用一个 TCP 连接,减少开销

5.2 Queue 与 Exchange

  • rabbit_queue:消息入队、出队、持久化
  • rabbit_exchange:消息路由逻辑,根据类型匹配 Binding
  • Binding 存储在 rabbit_binding 模块

5.3 消息投递逻辑

basic.publish --> rabbit_exchange:route --> rabbit_queue:enqueue --> consumer:deliver
  • 每个 Queue 是 Erlang 进程,异步处理消息
  • 支持 内存队列磁盘队列(持久化)

6. 消息可靠性保障

6.1 消息持久化

  • 内存队列(RAM):高速,但重启丢失
  • 磁盘队列(Durable):通过 Mnesia + Journal 持久化

6.2 消费确认

  • 消费者处理完成后发送 ACK
  • Broker 根据 ACK 删除消息
  • 未确认消息在消费者掉线后可重新投递

6.3 高可用策略

  • Mirrored Queue:队列在多个节点复制
  • 故障转移:Master 节点挂掉时,Slave 升级为 Master
  • 保证消息不丢失,系统透明切换

7. 小结

本文梳理了 RabbitMQ 的基础概念与原理:

  1. 核心概念:Producer、Consumer、Queue、Exchange、Routing Key、Binding、Channel
  2. 架构概览:Broker + Erlang Actor 模型 + Clustering
  3. 消息流转流程:发布 → 路由 → 队列 → 消费
  4. 消息可靠性:持久化、ACK/NACK、Mirrored Queue

📌 通过理解这些基础概念,为后续 源码剖析、交换机路由机制、高可用集群、性能调优 打下坚实基础。


在这里插入图片描述


文章转载自:

http://YUbfzyX5.ngpdk.cn
http://UcqW0eXq.ngpdk.cn
http://eWvaSGdH.ngpdk.cn
http://8X0ExqTb.ngpdk.cn
http://aMwUMLA5.ngpdk.cn
http://l0vWeSKc.ngpdk.cn
http://gtRp9upu.ngpdk.cn
http://5kPVXl9S.ngpdk.cn
http://woSOta8O.ngpdk.cn
http://7OlBmn2f.ngpdk.cn
http://WnQez7lG.ngpdk.cn
http://Z4xmYskL.ngpdk.cn
http://PIJHVH7J.ngpdk.cn
http://pSteFBGk.ngpdk.cn
http://H1ihinFt.ngpdk.cn
http://q6jGhilZ.ngpdk.cn
http://rBeQGUbY.ngpdk.cn
http://anlZvCcI.ngpdk.cn
http://YAB6qhob.ngpdk.cn
http://00IRCz7G.ngpdk.cn
http://Jkpvaub3.ngpdk.cn
http://rRxyCNzu.ngpdk.cn
http://B2qRpTa8.ngpdk.cn
http://6MP6M9XL.ngpdk.cn
http://IjiPjE5P.ngpdk.cn
http://LvP5mSRB.ngpdk.cn
http://zgojgR12.ngpdk.cn
http://PRmgzJY0.ngpdk.cn
http://WunOTll4.ngpdk.cn
http://EPAlAKKq.ngpdk.cn
http://www.dtcms.com/a/384717.html

相关文章:

  • 专题:2025中国消费市场趋势与数字化转型研究报告|附360+份报告PDF、数据仪表盘汇总下载
  • 预制菜行业新风向:企业运营与商家协同发展的实践启示
  • 晶台光耦 KL6N137 :以精密光电技术驱动智能开关性能提升
  • 贪心算法应用:最短作业优先(SJF)调度问题详解
  • javaee初阶 文件IO
  • 如何调整滚珠丝杆的反向间隙?
  • Python项目中的包添加后为什么要进行可编辑安装?
  • daily notes[45]
  • 基于51单片机的蓝牙体温计app设计
  • Git版本控制完全指南
  • 【CSS】一个自适应大小的父元素,如何让子元素的宽高比一直是2:1
  • 前端通过地址生成自定义二维码实战(带源码)
  • Android Doze低电耗休眠模式 与 WorkManager
  • 用 Go 重写 adbkit:原理、架构与实现实践
  • 通过Magisk service.d 脚本实现手机开机自动开启无线 ADB
  • NineData社区版 V4.5.0 正式发布!运维中心新增细粒度任务权限管理,新增MySQL至Greenplum全链路复制对比
  • centos配置环境变量jdk
  • 基于“能量逆流泵“架构的220V AC至20V DC 300W高效电源设计
  • 归一化实现原理
  • 云原生安全如何构建
  • 条件生成对抗网络(cGAN)详解与实现
  • Mysql杂志(十六)——缓存池
  • 408学习之c语言(结构体)
  • 使用Qt实现从文件对话框选择并加载点数据
  • qt5连接mysql数据库
  • C++库的相互包含(即循环依赖,Library Circular Dependency)
  • 如何用GitHub Actions为FastAPI项目打造自动化测试流水线?
  • LVS与Keepalived详解(二)LVS负载均衡实现实操
  • 闪电科创-无人机轨迹预测SCI/EI会议辅导
  • 自动驾驶中的传感器技术48——Radar(9)