开始RabbitMQ
RabbitMQ 是一个基于 AMQP(高级消息队列协议)的消息中间件,它用于实现分布式系统之间的异步通信和解耦。RabbitMQ 采用生产者-交换机-队列-消费者的架构,生产者将消息发送到交换机(Exchange),交换机根据不同的路由规则将消息投递到一个或多个队列(Queue),最终由消费者(Consumer)从队列中获取并处理消息。它支持多种交换机类型,如 Direct、Fanout、Topic 和 Headers,以适应不同的消息路由需求。RabbitMQ 具有高可靠性、可扩展性和灵活性,支持消息确认、持久化、死信队列等机制,广泛应用于微服务架构、事件驱动系统、流量削峰等场景。
1. 四大核心角色
Section titled “1. 四大核心角色”1.1. 生产者
Section titled “1.1. 生产者”生产者(Producer)是消息队列系统中负责发送消息的组件,它将业务数据封装成消息并发送到 RabbitMQ 的交换机(Exchange),由交换机根据路由规则将消息投递到队列。生产者的作用是解耦系统,实现异步通信,提高系统的扩展性和稳定性。
1.2. 交换机
Section titled “1.2. 交换机”交换机是 RabbitMQ 中的重要组件,它既负责接收生产者发送的消息,又负责将消息推送到队列。交换机必须明确如何处理接收到的消息,是投递到特定队列、多个队列,还是直接丢弃,这取决于交换机的类型。
1.3. 队列
Section titled “1.3. 队列”队列是 RabbitMQ 内部使用的一种数据结构,所有消息在 RabbitMQ 和应用程序之间流转时,都会存储在队列中。队列本质上是一个消息缓冲区,其容量仅受主机的内存和磁盘限制。多个生产者可以向同一个队列发送消息,多个消费者也可以同时从该队列接收消息,这正是队列的典型使用方式。
1.4. 消费者
Section titled “1.4. 消费者”消费者通常是一个等待接收消息的程序,其作用与接收消息类似。在实际应用中,生产者、消费者和消息中间件往往部署在不同的机器上。此外,同一个应用程序既可以充当生产者,也可以作为消费者,具体取决于其在系统中的角色和业务需求。
2. 常见消息模型
Section titled “2. 常见消息模型”2.1. Hello World
Section titled “2.1. Hello World”
2.2. 工作队列
Section titled “2.2. 工作队列”
2.3. 发布/订阅
Section titled “2.3. 发布/订阅”
2.4. 路由
Section titled “2.4. 路由”
2.5. 主题
Section titled “2.5. 主题”
2.6. RPC
Section titled “2.6. RPC”
通过Docker Compose部署RabbitMQ
Section titled “通过Docker Compose部署RabbitMQ”services: rabbitmq: image: rabbitmq:management container_name: rabbitmq ports: - "5672:5672" # AMQP - "15672:15672" # Management UI environment: RABBITMQ_DEFAULT_USER: camellia RABBITMQ_DEFAULT_PASS: "camellia20." volumes: - ./volume:/var/lib/rabbitmq