RabbitMQ 是一个开源的消息队列系统,它是使用 Erlang 语言编写的,基于 AMQP(Advanced Message Queuing Protocol)协议实现的。RabbitMQ 的底层架构主要由以下几个部分组成:
1. Broker:消息队列的核心组件,负责接收、存储和转发消息。RabbitMQ 中的 Broker 由 Exchange 和 Queue 两个部分组成,Exchange 负责接收生产者发送的消息并将其路由到相应的 Queue 中,Queue 则负责存储消息并将其发送给消费者。
2. Exchange:消息交换机,负责接收生产者发送的消息并将其路由到相应的 Queue 中。Exchange 接收到消息后会根据预设的路由规则将消息路由到相应的 Queue 中。
3. Queue:消息队列,负责存储消息并将其发送给消费者。Queue 中的消息可以被多个消费者消费,但每个消息只能被一个消费者消费。
4. Producer:消息生产者,负责向 Exchange 发送消息。
5. Consumer:消息消费者,负责从 Queue 中获取消息并进行处理。
RabbitMQ 的底层架构支持多种消息传递模式,包括点对点模式、发布/订阅模式、路由模式等。同时,RabbitMQ 还支持消息的持久化、消息的优先级、消息的过期时间等高级特性,可以满足各种复杂的消息传递需求。