跳转到内容

开始RabbitMQ


RabbitMQ 是一个基于 AMQP(高级消息队列协议)的消息中间件,它用于实现分布式系统之间的异步通信和解耦。RabbitMQ 采用生产者-交换机-队列-消费者的架构,生产者将消息发送到交换机(Exchange),交换机根据不同的路由规则将消息投递到一个或多个队列(Queue),最终由消费者(Consumer)从队列中获取并处理消息。它支持多种交换机类型,如 DirectFanoutTopicHeaders,以适应不同的消息路由需求。RabbitMQ 具有高可靠性、可扩展性和灵活性,支持消息确认、持久化、死信队列等机制,广泛应用于微服务架构、事件驱动系统、流量削峰等场景。

生产者(Producer)是消息队列系统中负责发送消息的组件,它将业务数据封装成消息并发送到 RabbitMQ 的交换机(Exchange),由交换机根据路由规则将消息投递到队列。生产者的作用是解耦系统,实现异步通信,提高系统的扩展性和稳定性。

交换机是 RabbitMQ 中的重要组件,它既负责接收生产者发送的消息,又负责将消息推送到队列。交换机必须明确如何处理接收到的消息,是投递到特定队列、多个队列,还是直接丢弃,这取决于交换机的类型。

队列是 RabbitMQ 内部使用的一种数据结构,所有消息在 RabbitMQ 和应用程序之间流转时,都会存储在队列中。队列本质上是一个消息缓冲区,其容量仅受主机的内存和磁盘限制。多个生产者可以向同一个队列发送消息,多个消费者也可以同时从该队列接收消息,这正是队列的典型使用方式。

消费者通常是一个等待接收消息的程序,其作用与接收消息类似。在实际应用中,生产者、消费者和消息中间件往往部署在不同的机器上。此外,同一个应用程序既可以充当生产者,也可以作为消费者,具体取决于其在系统中的角色和业务需求。

Terminal window
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