Краткое руководство: публикация и подписка на сообщения MQTT в пространстве имен Event Grid с помощью портала Azure

В этом кратком руководстве вы используете портал Azure для создания пространства имен Event Grid с включенным брокером MQTT. Затем вы создаете подресурсы, такие как клиенты, группы клиентов и пространства тем. Вы предоставляете клиентам доступ к публикации и подписке на тематические пространства, после чего публикуете и получаете сообщения между клиентами.

Требования

  • Создайте бесплатную учетную запись Azure , если у вас нет подписки Azure.
  • Если вы не знакомы с Сеткой событий Azure, ознакомьтесь с обзором сетки событий перед началом работы с этим руководством.
  • Убедитесь, что порт 8883 открыт в брандмауэре. В этом руководстве используется протокол MQTT, который осуществляет обмен данными через порт 8883. Этот порт может быть заблокирован в некоторых корпоративных и образовательных сетевых средах.
  • Для создания отпечатка и проверки подлинности подключения клиента требуется сертификат клиента X.509.

Генерация образца сертификата клиента и отпечатка

Если у вас еще нет сертификата, можно создать пример сертификата с помощью шага CLI. Рассмотрите возможность установки вручную для Windows.

После успешной установки шага откройте командную строку в папке профиля пользователя (тип Win+R %USERPROFILE%).

  1. Чтобы создать корневые и промежуточные сертификаты, выполните следующую команду. Помните пароль, который необходимо использовать на следующем шаге.

    step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
    
  2. Используйте генерируемые файлы ЦС для создания сертификата для первого клиента. Убедитесь, что вы используете правильный путь для файлов сертификатов и секретов в команде.

    step certificate create client1-authn-ID client1-authn-ID.pem client1-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  3. Чтобы просмотреть отпечаток, выполните команду Step.

    step certificate fingerprint client1-authn-ID.pem
    
  4. Теперь создайте сертификат для второго клиента.

    step certificate create client2-authn-ID client2-authn-ID.pem client2-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
    
  5. Чтобы просмотреть отпечаток, используемый со вторым клиентом, выполните команду Step.

    step certificate fingerprint client2-authn-ID.pem
    

Создание пространства имен

  1. Войдите на портал Azure.

  2. В строке поиска введите пространства имен сетки событий и выберите в списке пространства имен сетки событий .

    Снимок экрана поиска пространства имен Event Grid в портале Azure.

  3. В Event Grid namespaces нажмите + Создать на панели инструментов.

  4. В разделе "Создание пространства имен" выполните следующие действия.

    1. Выберите свою подписку Azure.

    2. Выберите существующую группу ресурсов или нажмите кнопку "Создать" и введите имя группы ресурсов.

    3. Введите уникальное имя пространства имен. Имя пространства имен должно быть уникальным для каждого региона, так как оно представляет запись DNS. Не используйте имя, указанное на изображении. Вместо этого создайте собственное имя — оно должно находиться в диапазоне от 3 до 50 символов и содержать только значения a-z, A-Z, 0-9 и -.

    4. Выберите местоположение пространства имен Event Grid. В настоящее время пространство имен Event Grid доступно только в некоторых регионах.

      Снимок экрана: вкладка

  5. В нижней части страницы выберите Review + create.

  6. На вкладке "Просмотр и создание" страницы "Создать пространство имен", нажмите кнопку "Создать".

    Примечание.

    Чтобы упростить краткое руководство, используйте только страницу "Основы" для создания пространства имен. Подробные инструкции по настройке сети, безопасности и других параметров на дополнительных страницах мастера можно найти в статье "Create a Namespace".

  7. После успешного развертывания выберите Перейти к ресурсу, чтобы перейти на страницу "Обзор пространства имен Event Grid" для вашего пространства имен.

  8. На странице "Обзор " вы увидите, что брокер MQTT находится в состоянии "Отключено ". Чтобы включить брокер MQTT, выберите ссылку "Отключено ". Он перенаправляет вас в конфигурацию.

  9. В разделе "Конфигурация" выберите параметр "Включить брокер MQTT " и нажмите кнопку "Применить ", чтобы применить параметры.

    Снимок экрана: страница конфигурации пространства имен сетки событий для включения MQTT.

Создание клиентов

  1. В меню слева выберите "Клиенты " в разделе брокера MQTT.

  2. На вкладке Клиенты нажмите + Клиент на панели инструментов.

    Снимок экрана: страница

  3. В поле "Создание клиента" введите имя клиента. Имена клиентов должны быть уникальными в пространстве имен.

  4. Имя проверки подлинности клиента по умолчанию устанавливается как имя клиента. В этом руководстве измените на client1-authn-ID. Необходимо включить это имя, как Username в пакет CONNECT.

  5. В этом руководстве вы используете проверку подлинности на основе отпечатков. Включите отпечаток первого сертификата клиента в первичный отпечаток.

    Снимок экрана: конфигурация клиента 1.

  6. Нажмите кнопку "Создать " на панели инструментов, чтобы создать другой клиент.

  7. Повторите предыдущие шаги, чтобы создать второй клиент с именем client2. Измените имя client2-authn-ID аутентификации и добавьте отпечаток второго клиентского сертификата в Первичный отпечаток.

    Снимок экрана: конфигурация клиента 2.

    Примечание.

    • Для упрощения быстрого начала используйте совпадение отпечатков пальцев для аутентификации. Подробные инструкции по использованию цепочки сертификатов ЦС X.509 для проверки подлинности клиента см. в разделе проверки подлинности клиента с помощью цепочки сертификатов.
    • Кроме того, используйте группу клиентов по умолчанию $all , которая включает все клиенты в пространстве имен для этого упражнения. Дополнительные сведения о создании пользовательских групп клиентов с помощью атрибутов клиента см. в разделах "Группы клиентов".

Создание тематических пространств

  1. В левом меню выберите пространства тем в разделе MQTT брокера.

  2. В тематических пространствах выберите + Тематическое пространство на панели инструментов.

    Снимок экрана: страница

  3. Введите имя пространства темы.

    Снимок экрана: создание пространства для темы с заданным названием.

  4. Выберите и добавьте шаблон раздела , чтобы добавить шаблон раздела. Шаблон раздела определяет иерархию разделов для пространства тем. Вы можете иметь несколько шаблонов тем в пространстве тем, и каждый шаблон раздела может иметь собственную иерархию разделов.

  5. Введите contosotopics/topic1 шаблон раздела и нажмите кнопку "Создать ", чтобы создать пространство тем.

    Снимок экрана: конфигурация пространства тем.

Настройка управления доступом с помощью привязок разрешений

  1. В меню слева выберите привязки разрешений в разделе брокера MQTT .

  2. В привязках разрешений выберите +Привязка разрешений на панели инструментов.

    Снимок экрана: страница

  3. Настройте привязку разрешений следующим образом:

    1. Введите имя привязки разрешений. Например, contosopublisherbinding.

    2. Для названия группы клиентов выберите $all.

    3. Для названия пространства тем выберите пространство тем, созданное на предыдущем шаге.

    4. Предоставьте издателю разрешение на группу клиентов в пространстве тем.

      Снимок экрана: создание первой привязки разрешений.

  4. Нажмите кнопку "Создать", чтобы создать привязку разрешений.

  5. Создайте еще одну привязку разрешения (contososubscriberbinding) выбрав + Привязка разрешения на панели инструментов.

  6. Введите имя и предоставьте подписчикугруппы клиентов $all доступ к ContosoTopicSpace, как показано ниже.

    Снимок экрана: создание второй привязки разрешений.

  7. Нажмите кнопку "Создать", чтобы создать привязку разрешений.

Подключение клиентов к пространству имен с помощью приложения MQTTX

  1. Чтобы опубликовать и подписаться на сообщения MQTT, используйте любое нужное средство. В демонстрационных целях в этой статье показано, как публиковать и подписываться с помощью приложения MQTTX. Вы можете скачать приложение из https://mqttx.app/.

  2. Выберите + на панели навигации слева.

  3. Настройте client1 с помощью

    • Имя как client1 (это значение может быть любым)

    • Идентификатор клиентаclient1-session1 (идентификатор клиента в пакете CONNECT определяет идентификатор сеанса для клиентского подключения)

    • Имя пользователя как client1-authn-ID. Это значение должно соответствовать значению Имя проверки подлинности клиента, указанного при создании клиента в портале Azure.

      Внимание

      Имя пользователя должно соответствовать имени проверки подлинности клиента в метаданных клиента.

  4. Измените имя хоста на имя хоста MQTT на странице Обзор пространства имен.

    Снимок экрана, показывающий страницу обзора пространства имен Event Grid, на которой отображено имя узла MQTT.

  5. Обновите порт до 8883.

  6. Переключите протокол SSL/TLS на включено.

  7. Чтобы убедиться, что проверка сертификата службы включена, переключите протокол SSL Secure на on.

  8. Выберите Сертификат типа Центра сертификации (ЦС) или самозаверяющийся сертификат.

  9. Укажите путь к файлу сертификата клиента.

  10. Укажите путь к файлу ключа клиента.

  11. Оставьте остальные параметры предопределенными значениями по умолчанию.

    Снимок экрана: часть 1 конфигурации клиента 1 в приложении MQTTX.

  12. Выберите "Подключиться", чтобы подключить клиента к брокеру MQTT.

  13. Чтобы подключить второй клиент client2, повторите предыдущие шаги, используя соответствующие сведения проверки подлинности, как показано ниже.

    Снимок экрана: часть 1 конфигурации клиента 2 в приложении MQTTX.

    Снимок экрана, показывающий конфигурацию клиента 2, часть 2, в приложении MQTTX.

Публикация и подписка с помощью приложения MQTTX

  1. После подключения клиентов выберите +Создать подписку для клиента2.

  2. Добавьте contosotopics/topic1 в качестве раздела и нажмите кнопку "Подтвердить". Другие поля можно оставить с существующими значениями по умолчанию.

    Снимок экрана: конфигурация раздела подписки в приложении MQTTX.

  3. Выберите client1 в левой панели.

  4. На клиенте1 в верхней части поля создания сообщения, введите contosotopics/topic1 в качестве темы для публикации.

  5. Создание сообщения. Вы можете использовать любой формат или JSON, как показано ниже.

  6. Нажмите кнопку Send (Отправить).

    Снимок экрана: публикация сообщений в разделе в приложении MQTTX.

  7. Сообщение отображается как опубликовано в клиенте 1.

    Снимок экрана: сообщение, опубликованное в разделе в приложении MQTTX.

  8. Переключитесь на client2. Убедитесь, что клиент2 получил сообщение.

    Снимок экрана: сообщение, полученное клиентом подписки на приложение MQTTX.