Краткое руководство. Публикация и подписка на сообщения MQTT в пространстве имен сетки событий с портал Azure

В этой статье объясняется, как использовать портал Azure для выполнения описанных ниже задач.

  1. Создание пространства имен Сетки событий и включение брокера MQTT
  2. Создание вложенных ресурсов, таких как клиенты, группы клиентов и пространства разделов
  3. Предоставление клиентам доступа к публикации и подписке на пространства разделов
  4. Публикация и получение сообщений между клиентами

Необходимые компоненты

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

Создание примера сертификата клиента и отпечатка

Если у вас еще нет сертификата, можно создать пример сертификата с помощью интерфейса командной строки шага. Рассмотрите возможность установки вручную для 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. В строке поиска введите пространства имен сетки событий и выберите в раскрывающемся списке пространства имен сетки событий.

    Screenshot of searching for Event Grid namespace on Azure portal.

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

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

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

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

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

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

      Screenshot showing Event Grid namespace create flow basics tab.

  5. В нижней части страницы выберите Review + create (Проверить и создать).

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

    Примечание.

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

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

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

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

    Screenshot showing Event Grid namespace configuration page to enable MQTT.

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

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

  2. На странице "Клиенты" выберите +Клиент на панели инструментов.

    Screenshot of the Clients page with Add button selected.

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

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

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

    Screenshot of client 1 configuration.

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

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

    Screenshot of client 2 configuration.

    Примечание.

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

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

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

  2. На странице "Пространства тем" выберите "+ Раздел" на панели инструментов.

    Screenshot of Topic spaces page with create button selected.

  3. Укажите имя пространства тем на странице "Создание пространства тем".

  4. Выберите и добавьте шаблон раздела.

    Screenshot of Create topic space with the name.

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

    Screenshot of topic space configuration.

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

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

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

    Screenshot that shows the Permission bindings page with the Create button selected.

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

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

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

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

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

      Screenshot showing creation of first permission binding.

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

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

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

    Screenshot showing creation of second permission binding.

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

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

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

    Screenshot showing MQTTX app left rail to add new client.

  2. Настройка client1 с помощью

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

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

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

      Внимание

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

  3. Обновите имя узла до имени узла MQTT на странице обзора пространства имен.

    Screenshot showing Event Grid namespace overview page, which has MQTT hostname.

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

  5. Переключение SSL/TLS на ON.

  6. Переключите ssl Secure в ON, чтобы убедиться, что проверка сертификата службы.

  7. Выберите сертификат как самозаверяющий.

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

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

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

    Screenshot showing client 1 configuration part 1 on MQTTX app.

  11. Выберите Подключение для подключения клиента к брокеру MQTT.

  12. Повторите описанные выше действия, чтобы подключить второй клиент клиента2 с соответствующими сведениями о проверке подлинности, как показано ниже.

    Screenshot showing client 2 configuration part 1 on MQTTX app.

    Screenshot showing client 2 configuration part 2 on MQTTX app.

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

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

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

    Screenshot showing subscription topic configuration on MQTTX app.

  3. Выберите client1 в левой железной дороге.

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

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

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

    Screenshot showing message publishing on the topic in MQTTX app.

  7. Сообщение должно быть опубликовано в клиенте 1.

    Screenshot showing message published on the topic in MQTTX app.

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

    Screenshot showing the message received by the subscribing client on MQTTX app.

Следующие шаги