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

RabbitMQ系列02 - RabbitMQ 消息模型:Broker、交换器、队列与收发路径

RabbitMQ 消息模型Broker、交换器、队列与收发路径RabbitMQ是遵从AMQP 0-9-1的消息中间件Erlang实现消息先进入Exchange交换器再按类型与绑定规则路由到Queue队列。本文归纳核心对象、四种交换器、生产/消费典型步骤、Connection 与 Channel的分工以及客户端入口。帧级命令名与握手顺序以AMQP 0-9-1规范及RabbitMQ官方文档为准。目录RabbitMQ 与 AMQP 的定位核心对象一览交换器类型与路由行为topic 绑定键通配符路由示意Mermaid生产者从连接到入队消费者订阅、投递与确认Connection 与 Channel多消费者与轮询客户端入口多语言免责声明RabbitMQ 与 AMQP 的定位AMQPAdvanced Message Queuing Protocol面向消息中间件的开放应用层协议客户端与 Broker 可跨语言、跨厂商交互具体特性以0-9-1规范与实现为准。RabbitMQ实现 AMQP 的 Broker 之一另可通过插件支持STOMP、MQTT等但核心路由心智仍建议从 AMQP 模型理解。常见特点说明可靠性持久化、publisher confirm、消费者ACK等组合使用灵活路由Exchange Binding内置类型不足时可插件扩展扩展与高可用集群、经典镜像队列或Quorum Queue等随版本演进以文档为准可观测性管理插件、指标与日志核心对象一览对象角色Producer发消息负载常含payload与路由相关标签如 exchange、routing key。入队后消费者通常主要处理payload。Exchange路由中枢生产者不直接发队列概念上而是发到 Exchange。Queue存储消息与 Exchange 通过Binding关联。Binding声明 Exchange 与 Queue 的关系含binding key及参数。Consumer订阅 Queue接收投递确认后 Broker 可删除消息依ACK 模式。Broker服务实例口语上常叫「一台 RabbitMQ」。Routing key生产者发布时携带是否与binding key匹配、如何匹配取决于Exchange 类型。交换器类型与路由行为类型行为概要fanout忽略 routing key消息复制到所有绑定队列。directrouting key 与 binding key 完全相同的队列接收消息。topic点分词 通配符匹配见下节。headers按消息headers匹配不依赖 routing key复杂度和性能需自行评估生产相对较少用。默认交换器AMQP 规定存在名称为空的 direct 交换器用默认交换器发队列时routing key 常被当作队列名路由到对应队列便于入门复杂路由仍建议显式 Exchange。topic 绑定键通配符Routing key / binding key一般为.分隔的单词如orders.created.cn。符号含义*匹配恰好一个单词#匹配零个或多个单词多段示例教学用Binding key能匹配的 routing key 示例*.orange.*a.orange.blazy.#lazy、lazy.pink、lazy.pink.rabbit路由示意Mermaidpublish routing keybindingbindingProducerExchangeQueue 1Queue 2ConsumerConsumerfanout示意同一条消息进多队列Producerfanout XQ1Q2生产者从连接到入队典型顺序教学归纳与 Broker 建立TCP Connection创建Channel。声明 Exchange类型、持久化等。声明 Queue持久化、排他、自动删除等。QueueBind指定binding key及参数。Basic.Publish指定exchange、routing key、payload。Exchange 按规则将消息放入0…n 个队列。无匹配队列时行为依赖mandatory、备份交换器等配置可能回退或丢弃。关闭 Channel / Connection。Producer ──► Channel ──► Exchange ──► Queue0..n │ └── 声明、绑定、发布均在 Channel 上消费者订阅、投递与确认Connection Channel。可选Basic.Qosprefetch限制未ACK的在途消息数利于公平分发与背压与 Broker 内部流控配合。Basic.Consume推模式或Basic.Get拉模式少用。收到Basic.Deliver后处理业务。Basic.Ack或Nack/Reject依场景与重试策略。关闭资源。Connection 与 Channel概念说明Connection到 Broker 的TCP 连接认证在其上完成。ChannelConnection 上的轻量虚拟连接有独立 ID绝大多数 AMQP 命令在 Channel 上发送避免每条命令都新建 TCP。实践多线程应用常为每个线程或有限个使用独立 Channel不要在多线程间共享同一个 Channel客户端库通常非线程安全。多消费者与轮询同一队列上挂多个消费者时Broker 常按Round-Robin在消费者间分配消息实现水平扩展。若各消息处理耗时差异大仅靠轮询可能导致慢消费者拖整体可配合prefetch1、拆分队列等策略优化。广播需求队列层不提供「一条消息同时被多个消费者各收一份」的默认语义可用fanout 多队列或MQTT等协议语义实现。客户端入口多语言语言常见客户端包名示例Javacom.rabbitmq.clientConnectionFactory、Connection、ChannelPythonpika或aio-pika.NETRabbitMQ.ClientGoamqp091等协议操作集中在ChannelConnection负责建 Channel 与生命周期。免责声明Quorum Queue、流控、集群行为随版本变化大部署与调优请以当前RabbitMQ官方文档为准。主题RabbitMQ、AMQP、Exchange、Queue、路由、Channel。

相关文章:

RabbitMQ系列02 - RabbitMQ 消息模型:Broker、交换器、队列与收发路径

RabbitMQ 消息模型:Broker、交换器、队列与收发路径 RabbitMQ 是遵从 AMQP 0-9-1 的消息中间件(Erlang 实现),消息先进入 Exchange(交换器),再按类型与绑定规则路由到 Queue(队列&a…...

VITS快速微调实战:从零到一,打造你的专属AI语音合成模型

1. 为什么你需要专属AI语音合成 最近两年AI语音合成技术突飞猛进,从机械的电子音到如今几乎可以以假乱真的人声,这个变化让我这个玩了十年语音合成的老玩家都感到震惊。VITS作为当前最先进的端到端语音合成模型之一,最大的魅力在于它不仅能生…...

别急着重装Anaconda!试试这个‘注册表修复’大法,让Jupyter Notebook秒回开始菜单

深度解析:Anaconda快捷方式消失的真相与高效修复方案 每次重装Windows系统后,许多开发者都会遇到一个令人头疼的问题——原本好好的Anaconda和Jupyter Notebook快捷方式从开始菜单神秘消失了。大多数人第一反应是重装整个Anaconda,但这不仅耗…...

电能量数据质量“体检+病灶定位”管理体系与工程化实践

目录 一、引言:电能量数据质量的现实痛点与治理刚需 二、总体架构:“体检+病灶定位”闭环管理模式 三、数据质量“体检套餐”设计(六性指标+评分模型) 3.1 六维核心评价指标(六性指标) 3.2 标准化体检流程(六步法) 3.3 全面CT扫描:质量评估计算引擎 四、体检报告…...

别让AI代码,变成明天的技术债靠

如果有多个供应商,你也可以使用 [[CC-Switch]] 来可视化管理这些API key,以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

DeepSeek-R1-Distill-Qwen-1.5B实战教程:Python调用与流式对话实现

DeepSeek-R1-Distill-Qwen-1.5B实战教程:Python调用与流式对话实现 1. 模型简介与环境准备 1.1 DeepSeek-R1-Distill-Qwen-1.5B模型特点 DeepSeek-R1-Distill-Qwen-1.5B是DeepSeek团队基于Qwen2.5-Math-1.5B基础模型,通过知识蒸馏技术融合R1架构优势打…...

如何通过手机号码实现精准地理位置查询:完整技术实现指南

如何通过手机号码实现精准地理位置查询:完整技术实现指南 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_m…...

029、图像到图像翻译:SDEdit与Paint by Example

调试一个老项目,遇到个头疼问题:用户上传的手绘草图,需要自动转成写实风格的产品图。试了传统GAN,效果要么太“塑料感”,要么细节全糊。同事扔来一句:“试试扩散模型呗,现在不都流行这个?” 翻了几篇论文,发现SDEdit和Paint by Example这两个路子挺有意思,今天把调试…...

3分钟上手!跨平台串口调试神器SerialPortAssistant终极指南

3分钟上手!跨平台串口调试神器SerialPortAssistant终极指南 【免费下载链接】SerialPortAssistant This project is a cross-platform serial port assistant. It can run on WINDOWS, linux、android、macos system. 项目地址: https://gitcode.com/gh_mirrors/…...

如何高效使用Java RPG Maker MV/MZ解密工具:专业级文件处理完全指南

如何高效使用Java RPG Maker MV/MZ解密工具:专业级文件处理完全指南 【免费下载链接】Java-RPG-Maker-MV-Decrypter You can decrypt whole RPG-Maker MV Directories with this Program, it also has a GUI. 项目地址: https://gitcode.com/gh_mirrors/ja/Java-R…...

3个步骤彻底告别PSD导入噩梦:Unity智能解析器终极指南

3个步骤彻底告别PSD导入噩梦:Unity智能解析器终极指南 【免费下载链接】UnityPsdImporter Advanced PSD importer for Unity3D 项目地址: https://gitcode.com/gh_mirrors/un/UnityPsdImporter 你是否曾为导入一个复杂的PSD界面而耗费数小时?当设…...

5个技巧让你快速掌握跨平台串口调试工具SerialPortAssistant

5个技巧让你快速掌握跨平台串口调试工具SerialPortAssistant 【免费下载链接】SerialPortAssistant This project is a cross-platform serial port assistant. It can run on WINDOWS, linux、android、macos system. 项目地址: https://gitcode.com/gh_mirrors/se/SerialP…...

Python自动化网页数据抓取:让数据采集效率提升10倍

手动复制网页数据费时费力?每次都要打开几十个页面重复同样的操作?今天教你用Python写一个通用网页数据抓取脚本,告别重复劳动! 实战场景 定期采集竞品价格信息 抓取行业新闻和资讯 批量获取商品评论数据 定时监控网站内容更新 核心实现 准备工作 pip install requests …...

如何快速掌握FanControl:5分钟实现智能风扇控制与中文界面

如何快速掌握FanControl:5分钟实现智能风扇控制与中文界面 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

Ubuntu 18.04下Intel Realsense D435i深度相机从驱动安装到3D图像采集全流程指南

Ubuntu 18.04环境下Intel Realsense D435i深度相机实战指南 在机器人研发和计算机视觉领域,深度相机正成为环境感知的核心传感器。Intel Realsense D435i凭借其双目红外摄像头、RGB传感器和内置IMU模块的硬件配置,为SLAM、三维重建等应用提供了高性价比…...

JSP的了解和使用

文章目录1.概述2.本质3.核心组成4.优点5.缺点6.作用域1.概述 JSP 的全称是 Jakarta Server Pages(曾用名:JavaServer Pages),是一种用于开发动态网页的 Java Web 技术。它的核心思想是:在 HTML 页面中嵌入 Java 代码&a…...

RevokeMsgPatcher:一键解决PC版微信/QQ/TIM消息防撤回难题

RevokeMsgPatcher:一键解决PC版微信/QQ/TIM消息防撤回难题 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcod…...

PowerShell色彩魔法:利用ANSI转义序列打造个性化终端输出

1. 从黑白到彩色:PowerShell终端的美化革命 记得刚接触编程那会儿,最让我头疼的就是PowerShell那个黑漆漆的窗口。每次调试脚本,满屏的白色文字看得眼睛发酸,关键信息总是淹没在茫茫输出中。直到有一天,我在Linux终端看…...

自动导引车(AGV)与自主移动机器人(AMR)控制系统的 C# 开源封装库锹

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode,现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力,让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中,我们遇到了一个很现实…...

WarcraftHelper终极指南:5分钟让魔兽争霸3重获新生

WarcraftHelper终极指南:5分钟让魔兽争霸3重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为经典游戏《魔兽争霸3》在现…...

GEE实战指南:Sentinel-2多光谱植被指数批量计算与生态监测应用

1. 为什么选择Sentinel-2数据做植被分析? 如果你正在研究农作物长势、森林覆盖率或者城市绿化变化,Sentinel-2卫星数据绝对是你的首选。这颗由欧洲航天局发射的卫星,携带的多光谱成像仪(MSI)能提供13个光谱波段的数据&…...

Performance-Fish:让《环世界》流畅度提升400%的终极性能优化方案

Performance-Fish:让《环世界》流畅度提升400%的终极性能优化方案 【免费下载链接】Performance-Fish Performance Mod for RimWorld 项目地址: https://gitcode.com/gh_mirrors/pe/Performance-Fish 你是否曾因《环世界》后期殖民地卡顿而烦恼?当…...

设计企业级SKILL的7个最佳实战原则

引言 2025 年,AI 编程助手从"问答工具"进化成了"执行者"。Claude Code 的 Skill 系统是这一演进的缩影——你可以把一套复杂的工作流封装成一个 Skill,让 AI 像调用函数一样执行它。 但写一个能用的 Skill 容易,写一个好用的 Skill 很难。 skill-cre…...

终极指南:7个Masa Mods中文汉化包让你的Minecraft模组说中文

终极指南:7个Masa Mods中文汉化包让你的Minecraft模组说中文 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Minecraft中Masa系列模组的英文界面而烦恼吗?…...

配置管理方案环境变量与配置文件

配置管理方案:环境变量与配置文件的智慧之道 在现代软件开发与运维中,配置管理是确保系统灵活性和可维护性的核心环节。环境变量与配置文件作为两种主流的配置管理方式,各有优劣,适用于不同场景。环境变量适合动态调整、敏感信息…...

Realtek USB网卡驱动深度解析:群晖NAS网络性能提升实战指南

Realtek USB网卡驱动深度解析:群晖NAS网络性能提升实战指南 【免费下载链接】r8152 Synology DSM driver for Realtek RTL8152/RTL8153/RTL8156 based adapters 项目地址: https://gitcode.com/gh_mirrors/r8/r8152 在家庭网络和中小企业环境中,群…...

项目介绍 MATLAB实现基于RNN-XGBoost-CNN 递归神经网络(RNN)结合极限梯度提升(XGBoost)与卷积神经网络(CNN)进行股票价格预测的详细项目实例(含模型描述及部分示例代码)

MATLAB实现基于RNN-XGBoost-CNN 递归神经网络(RNN)结合极限梯度提升(XGBoost)与卷积神经网络(CNN)进行股票价格预测的详细项目实例 更多详细内容可直接联系博主本人 加v 我的昵称(nantangyuxi&…...

软件范围管理中的需求变更控制

软件范围管理中的需求变更控制:确保项目成功的关键 在软件开发过程中,需求变更是不可避免的。无论是客户需求的变化、市场环境的调整,还是技术方案的优化,都可能引发需求变更。如果缺乏有效的需求变更控制机制,项目范…...

Phi-3-mini-4k-instruct-gguf镜像免配置实战:独立venv+健康检查+一键访问

Phi-3-mini-4k-instruct-gguf镜像免配置实战:独立venv健康检查一键访问 1. 平台介绍 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本,特别适合问答、文本改写、摘要整理和简短创作等场景。这个镜像已经完成了本地部署&…...

3个步骤解锁QQ音乐加密格式:让付费音乐真正属于你

3个步骤解锁QQ音乐加密格式:让付费音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结…...