Rabbit MQ
Брокер сообщений. Основная цель принимать и отдавать сообщения, взаимодействовать различным программам при помощи протокола AMQP
Распределенный и горизонтально масштабируемый брокер сообщений. Он позволяет программам взаимодействовать с помощью протокола 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, что открывает доступ к более широкому спектру клиентов и инструментов.
