Rabbit MQ

Брокер сообщений. Основная цель принимать и отдавать сообщения, взаимодействовать различным программам при помощи протокола AMQP

Rabbit MQ Распределенный и горизонтально масштабируемый брокер сообщений. Он позволяет программам взаимодействовать с помощью протокола AMQP, а через дополнительные модули и с помощью протоколов MQTT, HTTP.

Состоит из сервера, библиотек поддержки протоколов HTTP, XMPP и STOMP, клиентских библиотек AMQP для Java и .NET Framework и различных плагинов. Имеется реализация клиентов для доступа к RabbitMQ для целого ряда языков программирования, в том числе для Java, Perl, Python, Ruby, PHP. Отдельные подсистемы или приложения могут обмениваться произвольным образом сообщениями через AMQP-брокер, который осуществляет маршрутизацию.


Возможности

Сообщения — универсальный транспорт

RabbitMQ реализует протокол AMQP 1.0 и поддерживает расширенные семантики маршрутизации, подтверждения доставки и транзакций. Благодаря этому он позволяет строить как простые очереди «поставь‑получи», так и сложные с роутинг‑ключами и привязками.

Высокая доступность и масштабируемость

Сервер поддерживает кластеризацию, зеркалирование очередей (shovels) и репликацию через Federation‑Plugins. Это обеспечивает отказоустойчивость и позволяет горизонтально масштабировать систему, распределяя нагрузку между несколькими узлами.

Поддержка клиентских библиотек

Для большинства популярных языков (Java, .NET, Python, Ruby, Go, Node.js и др.) есть официальные клиентские библиотеки. Это упрощает интеграцию RabbitMQ в существующие приложения и позволяет быстро разрабатывать продакшн‑среды.

Гибкое управление нагрузкой

С помощью политики (policies) можно автоматически балансировать очереди, ограничивать их размер, задавать TTL‑для сообщений и проводить автоматическое удаление. Это даёт возможность тонко настроить поведение очередей под конкретные сценарии.

Мониторинг и администрирование

Встроенный веб‑интерфейс (RabbitMQ Management Plugin) и REST‑API позволяют отслеживать состояние брокера, потребление сообщений, метрики производительности и конфигурацию в реальном времени.

Принцип работы

Модель «публикация/подписка»

RabbitMQ использует четыре типа exchanges — direct, fanout, topic и headers. Они определяют правила маршрутизации сообщений к очередям, что позволяет строить гибкие топологии без изменения клиентского кода.

Кластеризация и зеркалирование очередей

Внутри кластера узлы обмениваются состоянием через механизм «cluster nodes» и реплицируют очереди по выбранным узлам. Это обеспечивает отказоустойчивость без изменения логики приложений и поддерживается как нативно, так и через plugin «rabbitmq_cluster».

Плагин‑система (plugins) для расширения

RabbitMQ поставляется с рядом встроенных плагинов: rabbitmq_management, rabbitmq_shovel, rabbitmq_federation и др. Они открыты как в исходном коде, так и под лицензией Apache 2.0, что позволяет добавлять новые возможности без переписывания ядра.

Механизм политик (policies)

Управление очередями, обменами и политиками осуществляется при помощи конфигурационных файлов (rabbitmq‑config) или REST‑API. Это упрощает автоматизацию развертывания и позволяет применять одинаковые правила к целому кластеру.

Поддержка AMQP 1.0 и Open‑Source

Через плагин rabbitmq_amqp1_0 сервер полностью совместим с AMQP 1.0, что открывает доступ к более широкому спектру клиентов и инструментов.