RabbitMQ 是一个流行的开源消息中间件,它实现了高级消息队列协议(AMQP)。以下是 RabbitMQ 中的一些核心概念:
-
Broker:
- Broker 在 RabbitMQ 中指的是消息队列服务器实体,它接收并处理客户端的连接请求,管理队列、交换器、绑定等 AMQP 实体,并负责消息路由和存储。
-
Message (消息):
- 消息是 RabbitMQ 中的基本单位,由消息头(包含元数据如优先级、路由键等)和消息体组成。消息体可以携带任意类型的数据,通常是序列化后的对象信息。
-
Producer (生产者):
- 生产者是创建并发送消息到 RabbitMQ 的应用程序或服务。它们不直接将消息放入队列,而是发布消息到一个交换器(Exchange)。
-
Consumer (消费者):
- 消费者从 RabbitMQ 中接收并处理消息。它们监听指定的队列,当有新消息到达时会被通知并消费消息。
-
Queue (队列):
- 队列是 RabbitMQ 中用于存储消息的缓冲区,遵循先进先出(FIFO)原则。每个队列都有自己的名字,且消息只能被消费一次。
-
Exchange (交换器):
- 交换器是消息进入 RabbitMQ 系统的第一站,它根据预定义的规则(路由策略)将接收到的消息路由到一个或多个队列中。
-
Binding (绑定):
- 绑定是用来关联交换器和队列的规则,它定义了哪些队列会接收由交换器转发过来符合特定路由键(routing key)或其他匹配条件的消息。
-
Routing Key (路由键):
- 路由键是在发布消息时提供的一种标识,交换器会根据路由键与绑定规则来决定消息应该发往哪个队列。
-
Virtual Host (虚拟主机):
- 虚拟主机在 RabbitMQ 中是一个逻辑上的分隔单元,为不同的用户或应用提供隔离环境,每个虚拟主机有自己的队列、交换器、绑定等资源。
-
Connection & Channel:
- 连接(Connection)是指客户端(producer 或 consumer)通过网络与 RabbitMQ Broker 建立的 TCP 连接。
- 通道(Channel)是建立在连接之上的逻辑通道,多个通道可以在单个连接上复用,以提高性能和降低资源消耗。
-
Clustering (集群):
- RabbitMQ 支持集群部署,允许多个 RabbitMQ 服务器节点组成一个逻辑整体,实现高可用性和负载均衡。
以上这些概念共同构成了 RabbitMQ 的基础架构,使得其能够在分布式系统间进行可靠、灵活的消息传递和解耦。