RabbitMQ 核心专有名词解释
Broker
RabbitMQ 服务实例整体就叫 Broker。简单理解:RabbitMQ 服务器本身就是一个 Broker。
Broker 内部包含:Exchange (交换机)、Queue (队列)、VirtualHost (虚拟主机)、连接、信道、Binding 绑定关系全部都在 Broker 里面。
安装启动rabbitmq‑server,跑起来的这个服务进程 = Broker。
客户端代码(生产者、消费者)通过网络连接到 Broker。
VirtualHost (vhost 虚拟主机)
Broker 内部的逻辑隔离单元,类似数据库的库。
一个 Broker 可以多个 vhost,每个 vhost 下面有独立的 exchange、queue、binding,互不干扰。连接时要指定 vhost,默认/。
Exchange 交换机
接收生产者发来的消息,不存消息,只负责路由转发消息到队列。
生产者不会直接发送消息到队列!消息先发给 Exchange。
四种常用类型:
direct:精准匹配,routing-key 完全相等才投递topic:通配符模糊匹配(*#)fanout:广播,发给所有绑定的队列,忽略 routing‑keyheaders:根据消息头匹配,很少用
Queue 队列
真正存储消息的地方。消息最终落到队列。消费者从队列拿消息。
属性:持久化、排他、自动删除等。
Binding 绑定⭐
Exchange 和 Queue 之间的桥梁关系,是保存在 Broker 上的路由元数据。绑定操作可由生产者、消费者或者管理后台执行,绑定建立后就生效,绑定的时候可以指定 binding‑key。
消息流转逻辑:生产者发送消息至 Exchange 时,需要主动传入 routing‑key;Exchange 根据自身类型 +绑定关系上定义的 binding‑key做匹配判断,最终把消息投递到对应的 Queue。
两个核心 Key 场景区分
- routing‑key:生产者发送消息时携带的 key,属于消息的属性
- binding‑key:创建绑定关系时设置的匹配键,属于交换机‑队列之间绑定规则的一部分
direct 模式下两者一般写一样;topic 模式支持通配符写 binding‑key。
Connection 连接
TCP 物理连接,客户端和 Broker 之间建立的 TCP 连接,开销大,一般一个应用少量连接。
Channel 信道
连接内部的轻量逻辑通道。绝大多数业务操作都在 channel 上做。
一个 Connection 可以开很多 Channel,每个线程用一个 Channel,复用 TCP 连接,减少开销。
Message 消息
内容体 + 属性(routing-key、headers、持久化标记等)。
生产者 Producer
发送消息的应用程序,消息发送给 Exchange。
消费者 Consumer
监听队列,从 Queue 获取消息处理。