RabbitMQ — это программное обеспечение -брокер сообщений с открытым исходным кодом (иногда называемое промежуточным программным обеспечением, ориентированным на сообщения ), которое изначально реализовало расширенный протокол очереди сообщений (AMQP) и с тех пор было расширено с помощью подключаемой архитектуры для поддержки протокола потокового тексто-ориентированного обмена сообщениями (STOMP). , MQ Telemetry Transport (MQTT) и другие протоколы. [1]
Написанный на Erlang , сервер RabbitMQ построен на платформе Open Telecom Platform для кластеризации и аварийного переключения. Клиентские библиотеки для взаимодействия с брокером доступны для всех основных языков программирования. Исходный код распространяется под лицензией Mozilla Public License .
С ноября 2020 года доступны коммерческие предложения RabbitMQ для поддержки и корпоративных функций: «VMware RabbitMQ OVA», «VMware RabbitMQ» и «VMware RabbitMQ для Kubernetes» (различные уровни функций) [2] Также в пакет входит RabbitMQ с открытым исходным кодом. Bitnami [ 3] и на коммерческой основе для службы приложений Tanzu компании VMware.
Первоначально разработанный компанией Rabbit Technologies Ltd., которая была совместным предприятием LShift и CohesiveFT в 2007 году, [4] RabbitMQ был приобретен в апреле 2010 года компанией SpringSource , подразделением VMware . [5] Проект стал частью Pivotal Software в мае 2013 года. [6] Затем в декабре 2019 года его снова приобрела VMWare. [7]
Проект состоит из:
В этом разделе приведены примеры программ, написанных на Python (с использованием пакета pika ) для отправки и получения сообщений с использованием очереди.
Следующий фрагмент кода устанавливает соединение, проверяет наличие очереди получателей, затем отправляет сообщение и, наконец, закрывает соединение.
#!/usr/bin/env python3 import pikaсоединение = пика . BlockingConnection ( pika . ConnectionParameters ( host = «localhost» )) канал = Connection . канал () канал . очередь_объявления ( очередь = «привет» ) канал . Basic_publish ( exchange = "" , router_key = "hello" , body = "Hello World!" ) print ( "[x] Отправлено 'Hello World!'" ) Connection . закрывать ()
Аналогично, следующая программа получает сообщения из очереди и выводит их на экран: (Примечание: в этом примере не подтверждается получение сообщения.)
#!/usr/bin/env python3 import pika обратный вызов def ( ch , метод , свойства , тело ): print ( «[x] Получено %r » % тело )соединение = пика . BlockingConnection ( pika . ConnectionParameters ( host = «localhost» )) канал = Connection . канал () канал . очередь_объявления ( queue = "hello" ) print ( " [*] Ожидание сообщений. Для выхода нажмите Ctrl+C" ) канал . Basic_consume ( очередь = «привет» , on_message_callback = обратный вызов ) канал . старт_потребление ()