You need to enable JavaScript to run this app.
导航

相关概念

最近更新时间2024.01.31 11:11:00

首次发布时间2021.08.30 16:33:48

火山引擎使用 RabbitMQ 作为消息引擎,RabbitMQ 是一个生产者和消费者模型,主要负责接收、存储和转发消息。以下概念基于RabbitMQ进行描述。

消息 (Message)

消息一般分为两部分,消息体和标签。标签主要用来描述这条消息,消息体是消息的内容,是一个 JSON 体或者数据等。生产者发送消息,消费者消费消息,生产者与消费者彼此并无直接关系。

生产者(Producer)

即向队列发送消息的一方。发布消息的最终目的在于将消息内容传递给其他系统或模块,使对方按照约定处理该消息。

消费者(Consumer)

接收消息的一方。消费者订阅 RabbitMQ 的队列,当消费者消费一条消息时,只是消费消息的消息体。在消息路由的过程中,会丢弃标签,存入到队列中的只有消息体。

队列(Queue)

队列是用于存储消息的,生产者将消息送到队列,消费者从队列中获取和消费消息。多个消费者可以同时订阅同一个队列,队列里的消息分配给不同的消费者。

虚拟主机(Virtual Host)

Virtual Host 提供了资源逻辑隔离的能力,它允许用户在 RabbitMQ 服务器上创建多个独立的消息代理环境。每个 vhost 都有自己的 Queue、Exchange、Binding 和权限限制,使得不同的应用程序或服务可以在相互隔离的环境中进行通信。每个 RabbitMQ 服务器都有一个默认的 vhost,即 "/"。

代理(Broker)

消息中间件的服务节点。

交换器(Exchange)

也称为路由器,负责将生产者的消息路由到相应的 Queue 组件。Exchange 根据 Binding Key、Routing Key 以及 Exchange Type 属性路由消息。

绑定(Binding)

关联 Exchange 组件与 Queue 组件。

Binding Key

通过 Binding Key 将 Queue 组件绑定(Binding)到 Exchange 组件,当消息的 Routing Key 与 Binding Key 匹配时,消息将会被路由到 Binding Key 所绑定的 Queue 组件中。允许使用相同的 Binding Key 将多个 Queue 绑定到同一个 Exchange。

Routing Key

生产者发送给 Exchange 的消息一般会携带一个 Routing Key,用以指定该条消息的路由规则。在 Exchange Type 与 Binding Key 固定的情况下,生产者可通过指定 Routing Key 来指定消息流向哪里。

Exchange Type

常用的有 Direct Exchange、Topic Exchange 和 Fanout Exchang 共三种 Exchange Type。

  • Direct Exchange:Exchange 会按照 Binding Key 和 Routing Key 完全匹配的规则来路由消息。
  • Topic Exchange:Exchange 会根据 Binding Key 和 Routing Key 通配符匹配的规则来路由消息。
  • Fanout Exchange:Exchange 会忽略 Routing Key 和 Binding Key 的匹配规则,将消息路由到它绑定的所有 Queue中。

连接(Connection)

生产者或消费者应用系统与消息队列 RabbitMQ版之间的物理 TCP 连接。

通道(Channel)

建立在物理 TCP 连接中的虚拟连接,当生产者或消费者客户端与消息队列 RabbitMQ版建立连接后,所有 AMQP 命令(例如生产或消费消息、创建或订阅队列等)都是通过 Connection 连接中的 Channel 发出完成。在一个 TCP 连接中可同时建立多个 Channel,以此来实现 TCP 连接的多路复用。