tencent cloud

消息队列 RabbitMQ 版

动态与公告
新功能发布记录
公告
产品简介
TDMQ 产品系列介绍与选型
什么是消息队列 RabbitMQ 版
产品优势
应用场景
开源托管版与 Serverless 版差异说明
开源版本支持说明
与开源 RabbitMQ 对比
高可用
使用限制
RabbitMQ 相关概念
开区地域
相关云服务
产品计费
计费概述
价格说明
计费示例
按小时付费转包年包月
续费说明
查看消费明细
欠费说明
退费说明
快速入门
入门流程指引
步骤1:准备工作
步骤2:创建 RabbitMQ 集群
步骤3:配置 Vhost
步骤4:使用 SDK 收发消息
步骤5:查询消息
步骤6:销毁资源
用户指南
使用流程指引
配置账号权限
创建集群
配置 Vhost
连接集群
管理消息
配置高级特性
管理集群
查看监控和配置告警
实践教程
实践教程使用说明
RabbitMQ 客户端实践教程
RabbitMQ 消息可靠性实践教程
RabbitMQ 支持 MQTT 协议说明
迁移集群
迁移方案概述
步骤1:购买云上实例
步骤2:迁移元数据上云
步骤3:开启双读写
API 参考(开源托管版)
API 概览
API 参考(Serverless 版)
History
Introduction
API Category
Making API Requests
Relevant APIs for RabbitMQ Serverless PAAS Capacity
RabbitMQ Serverless Instance Management APIs
Data Types
Error Codes
SDK 文档
SDK 概述
Spring Boot Starter 接入
Spring Cloud Stream 接入
Java SDK
Go SDK
Python SDK
PHP SDK
安全与合规
权限管理
网络安全
删除保护
变更记录
云 API 审计
常见问题
服务等级协议
联系我们

Exchange

PDF
聚焦模式
字号
最后更新时间: 2026-01-04 15:26:34
本文介绍 TDMQ RabbitMQ 版中 Exchange 的概念、类型和使用方式。

概念

Exchange 是 TDMQ RabbitMQ 版的消息路由代理,Producer 将消息发送到 Exchange 中,Exchange 根据消息的属性或内容将消息路由到一个或多个 Queue 中(或者丢弃),Consumer 从 Queue 中拉取消息进行消费。
TDMQ RabbitMQ 版目前支持 Direct、Fanout、Topic 和 Header 四种类型的 Exchange。
Direct:该类型 Exchange 会把消息路由到 RoutingKey 和 BindingKey 完全匹配的 Queue 中。
Fanout:该类型 Exchange 会将消息路由到所有与其绑定的 Queue 中。
Topic:该类型 Exchange 支持多条件匹配和模糊匹配,即使用 RoutingKey 模式匹配和字符串比较的方式将消息路由至与其绑定的Queue中。
Header:该类型 Exchange 与 Routing Key 无关,匹配机制是匹配消息中的 Headers 属性信息。在绑定 Queue 与 Headers Exchange 之前声明一个map键值对,通过这个map对象实现消息队列和交换机的绑定。

Direct Exchange

路由规则:Direct Exchange 会把消息路由到 RoutingKey 和 BindingKey 完全匹配的 Queue 中。
应用场景:该类型 Exchange 适用于通过简单字符标识符过滤消息的场景,常用于单播路由。
使用示例



Message
Routing Key
Binding Key
Queue
Message 1
bizA
bizA
Queue 1
Message 2
bizB
bizB
Queue 2

Fanout Exchange

路由规则: 该类型 Exchange 会将消息路由到所有与其绑定的 Queue 中。
应用场景:该类型 Exchange 适用于广播消息的场景。例如分发系统使用 Fanout Exchange 来广播各种状态和配置更新。
使用示例



Message
Routing Key
Binding Key
Queue
Message 1
bazA.wechat_pay
bazA.credit,bazB.credit
Queue 1,Queue 2
Message 2
bazA.alipay
bazA.credit,bazB.credit
Queue 1,Queue 2
Message 3
bazC.credit
bazA.credit,bazB.credit
Queue 1,Queue 2

Topic Exchange

路由规则:该类型 Exchange 支持多条件匹配和模糊匹配,即使用 Routing Key 模式匹配和字符串比较的方式将消息路由至与其绑定的 Queue 中。
Topic Exchange 支持的通配符包括星号“*”和井号“#”。
星号“*”代表一个英文单词,例如 sh。
井号“#”代表零个、一个或多个英文单词,单词间用英文句号"."分隔,例如 cn.hz。
应用场景
该类型 Exchange 常用于多播路由,例如需要使用 Topic Exchange 分发有关于特定地理位置的数据。
使用示例



Message
Routing Key
Binding Key
Queue
Message 1
cn.hz
cn.hz.#
Queue 1
Message 2
cn.hz.store
cn.hz.#cn.*.store
Queue 1、Queue 2
Message 3
cn.sz.store
cn.*.store
Queue 2

Header Exchange

与 Routing Key 无关,匹配机制是匹配消息中的 Headers 属性信息。在绑定 Queue 与 Headers Exchange 之前声明一个map键值对,通过这个map对象实现Queue 和 Exchange 的绑定。当消息发送到 RabbitMQ 时会取到该消息的 Headers 与 Exchange 绑定时指定的键值对进行匹配;如果完全匹配则消息会路由到该队列,否则不会路由到该队列。
匹配规则x-match有下列两种类型:
x-match = all :表示所有的键值对都匹配才能接受到消息
x-match = any :表示只要有键值对匹配就能接受到消息



Message
消息Headers属性
Binding Headers 属性
Queue
Message 1
key1=value1
key2=value2
x-match = any
key1=value1 key2=value2
Queue 1
Message 2
key1=value1 key2=value2
key3=value3
x-match = any key1=value1 key2=value2

x-match = all key1=value1 key2=value2
key3=value3
Queue 1、Queue 2

X-Delayed-Message

这是一种自定义的 Exchange 类型,用于实现延迟消息传递。当将消息发送到 X-Delayed-Message 类型的交换机时,可以为消息设置一个延迟时间。RabbitMQ 会在延迟时间结束后,将消息路由到与其绑定的队列中。这种类型的交换机允许您在发送消息时控制消息何时被传递给消费者,从而实现消息的定时和延迟处理。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈