Как интегрировать служебную шину с RabbitMQ
Из этого руководства вы узнаете, как отправлять сообщения из RabbitMQ в служебную шину.
Вот несколько сценариев, в которых можно использовать эти возможности.
- Настройки Edge. У нас есть настройки Edge для отправки сообщений в RabbitMQ, но необходимо переадресовывать эти сообщения в служебную шину Microsoft Azure для дальнейшей обработки, поэтому мы можем использовать многие возможности Azure для работы с большими данными.
- Гибридное облако. Ваша компания только что приобрела стороннего производителя, который использует RabbitMQ для обмена сообщениями. Этот производитель использует другое облако. Пока он выполняет переход на Azure, вы уже можете приступить к совместному использованию данных, организовав мостовое соединение с RabbitMQ с помощью служебной шины Microsoft Azure.
- Интеграция со сторонними производителями. Сторонний производитель использует RabbitMQ в качестве брокера и хочет отправить нам свои данные, но они находятся за пределами нашей организации. Мы можем предоставить ключ SAS, который обеспечит стороннему производителю доступ к ограниченному набору очередей служебной шины Microsoft Azure, куда он сможет переадресовывать свои сообщения.
Список продолжается, но мы можем решить большинство из этих вариантов использования, связав RabbitMQ с Azure.
Сначала необходимо создать бесплатную учетную запись Azure, зарегистрировавшись здесь.
После входа в учетную запись перейдите на портал Azure и создайте новое пространство имен служебной шины Microsoft Azure. Пространства имен — это контейнеры областей, в которых будут находиться компоненты обмена сообщениями, такие как очереди и разделы.
Добавление нового пространства имен служебной шины Microsoft Azure
На портале Microsoft Azure нажмите большую кнопку "+", чтобы добавить новый ресурс.
Затем выберите "Интеграция" и щелкните "Служебная шина Microsoft Azure", чтобы создать пространство имен обмена сообщениями:
Вам будет предложено ввести сведения о пространстве имен. Выберите подписку Azure, которую нужно использовать. Если у вас нет группы ресурсов, вы можете ее создать.
Введите rabbitmq
для параметра Namespace name
, но вы также можете использовать любое название, которое захотите. Затем укажите расположение: East US
. Выберите ценовую категорию Basic
.
Если проблем не возникло, вы должны увидеть следующий экран подтверждения:
Вернитесь на портал Azure, и вы увидите новое пространство имен rabbitmq
. Щелкните его, чтобы получить доступ к ресурсу и добавить в него очередь.
Создание очереди служебной шины Microsoft Azure
Теперь, когда у вас есть пространство имен служебной шины Microsoft Azure, нажмите кнопку Queues
слева в разделе Entities
, чтобы можно было добавить новую очередь:
Очередь будет называться from-rabbitmq
. Это напомнит о том, откуда поступают сообщения. Можно оставить все остальные параметры по умолчанию, но вы можете изменить их в соответствии со своими потребностями.
Включение подключаемого модуля RabbitMQ Shovel
Для отправки сообщений из RabbitMQ в служебную шину Microsoft Azure мы будем использовать подключаемый модуль Shovel, поставляемый вместе с RabbitMQ. Вы можете включить этот модуль и его визуальный интерфейс с помощью этой команды:
rabbitmq-plugins enable rabbitmq_shovel_management
Возможно, вам придется выполнить эту команду от имени привилегированного пользователя.
Теперь пора получить учетные данные, необходимые для подключения RabbitMQ к Azure.
Подключение RabbitMQ к служебной шине Microsoft Azure
Вам потребуется создать политику общего доступа (SAS) для своей очереди, чтобы RabbitMQ мог публиковать в ней сообщения. Политика SAS позволяет указать, какие действия внешняя сторона может выполнять с вашим ресурсом. Идея заключается в том, что RabbitMQ может отправлять сообщения, но не может прослушивать очередь или управлять ею.
Установите флажок Send
и щелкните Create
, чтобы добавить политику SAS.
После создания политики щелкните ее, чтобы просмотреть основную строку подключения. Мы будем использовать ее, чтобы разрешить RabbitMQ взаимодействовать со служебной шиной Microsoft Azure:
Прежде чем можно будет использовать эту строку подключения, вам нужно преобразовать ее в формат подключения AMQP для RabbitMQ. Поэтому перейдите к преобразователю строк подключения, вставьте свою строку подключения в форму и затем нажмите кнопку "Преобразовать". Вы получите строку подключения, которая поддерживает RabbitMQ. (Этот веб-сайт работает в браузере локально, поэтому данные не передаются по сети). Вы можете получить доступ к его исходному коду на сайте GitHub.
Теперь откройте подключаемый модуль управления RabbitMQ в браузере http://localhost:15672/#/dynamic-shovels
и перейдите к Admin -> Shovel Management
, где можно добавить новый модуль Shovel, который будет отправлять сообщения из очереди RabbitMQ в вашу очередь служебной шины Microsoft Azure.
Вызовите ваш модуль Shovel azure
и выберите AMQP 0.9.1
в качестве исходного протокола. На снимке экрана показан универсальный код ресурса (URI) по умолчанию amqp://
, который подключает нас к локальному серверу RabbitMQ. Адаптируйте его к текущему развертыванию.
В качестве имени очереди можно использовать azure
. Если эта очередь не существует, RabbitMQ создаст ее автоматически. Вы также можете выбрать имя уже существующей очереди. Для других параметров можно оставить значения по умолчанию.
Затем в destination
выберите AMQP 1.0
в качестве протокола. В поле URI
введите строку подключения, полученную вами на шаге преобразования строки соединения Azure в формат RabbitMQ. Он должен выглядеть так:
amqps://rabbitmq-shovel:StringOfRandomChars@rabbitmq.servicebus.windows.net:5671/?sasl=plain
В поле Address
мы вводим имя очереди служебной шины Microsoft Azure, в данном случае она называется from-rabbitmq
. Щелкните Add Shovel
, и ваша установка должна быть готова к получению сообщений.
Публикация сообщений из RabbitMQ в служебную шину Microsoft Azure
В интерфейсе управления RabbitMQ мы можем перейти к Queues
, выбрать очередь azure
и выполнить поиск панели Publish message
. Появится форма, которая позволяет публиковать сообщения непосредственно в очереди. В нашем примере мы просто добавим в first message
качестве Payload
и нажмем Publish Message
:
Вернитесь в Azure и проверьте свою очередь. Щелкните Service Bus Explorer
на левой панели, а затем нажмите Обзор. Если все прошло успешно, вы увидите, что ваша очередь теперь содержит одно сообщение. Поздравляем!
Давайте убедимся, что именно это сообщение было отправлено из RabbitMQ. Выберите вкладку Peek
и нажмите кнопку Peek
, чтобы извлечь последние сообщения из вашей очереди. Щелкните сообщение, чтобы проверить его содержимое. Вы должны увидеть что-то похожее на приведенное ниже изображение с вашим first message
.
Подведем итоги
Поздравляем! Вы многого достигли! Вам удалось получить сообщения из RabbitMQ в служебной шине Microsoft Azure. Давайте вкратце повторим эти шаги:
- создание пространства имен служебной шины Microsoft Azure;
- добавление очереди в пространство имен;
- добавление политики SAS в очередь;
- получение строки подключения очереди;
- включение подключаемого модуля RabbitMQ Shovel и интерфейса управления;
- преобразование строки подключения служебной шины Microsoft Azure в формат AMQP для RabbitMQ;
- добавление нового модуля Shovel в RabbitMQ и его подключение к служебной шине Microsoft Azure;
- публикация сообщений.
Следуя приведенным выше инструкциям, вы интегрировали области вашей организации, находящиеся за пределами Azure. С помощью подключаемого модуля Shovel вы смогли доставить сообщения из RabbitMQ в служебную шину Microsoft Azure. Это дает огромные преимущества, так как теперь вы можете разрешить надежным сторонним производителям подключаться к своим приложениям с помощью развертывания Azure.
В конце концов, суть службы сообщений заключается в создании подключений, и с помощью данного способа мы только что сделали это.
Следующие шаги
- Дополнительные сведения о служебной шине Azure.
- Дополнительные сведения о поддержке AMQP 1.0 в служебной шине Microsoft Azure.