• Русский
  • Архитектура

    Архитектура RabbitMQ основана на паттерне очереди сообщений и состоит из нескольких компонентов, включая Producers, Message Queues, Consumers и Broker.

    В RabbitMQ выделяют несколько ролей:

    • Producers: Producers отвечают за создание и отправку сообщений в очереди сообщений RabbitMQ. Они публикуют сообщения в Exchange и указывают Routing Key сообщения.
    • Exchange: Exchange принимает сообщения от Producers и маршрутизирует их в одну или несколько Message Queues на основе Routing Key сообщения. Exchanges бывают разных типов, таких как direct exchange, topic exchange и fanout exchange, и определяют метод маршрутизации сообщения на основе правил сопоставления Routing Key.
    • Message Queues: Message Queues являются основным компонентом RabbitMQ, хранящим сообщения, ожидающие обработки. Message Queues управляют сообщениями по принципу First-In-First-Out (FIFO), обеспечивая порядок сообщений. Consumers извлекают сообщения из Message Queue для обработки.
    • Consumers: Consumers получают сообщения из Message Queue и выполняют необходимую обработку. Они могут подписываться на одну или несколько Message Queues и при необходимости указывать механизм подтверждения сообщений, обеспечивая подтверждение сообщений после их потребления.
    • Broker: Broker — это основной компонент RabbitMQ; он принимает сообщения от Producers и маршрутизирует их в соответствующие Message Queues. Broker также отвечает за управление доставкой сообщений, подтверждениями и постоянным хранением.

    Архитектура RabbitMQ поддерживает различные паттерны обмена сообщениями, такие как point-to-point, publish/subscribe и request/reply. Она также предоставляет гибкие правила маршрутизации, постоянное хранение, надежную доставку сообщений и функции приоритизации сообщений для удовлетворения потребностей различных сценариев.

    На следующей диаграмме показан процесс публикации и потребления сообщений через Exchange.

    Модель отправки и получения сообщений

    Для ознакомления с концепциями и принципами каждого компонента, пожалуйста, обратитесь к разделу Core Concepts.