Маршрутизация сообщений MQTT в Сетка событий Azure

Сетка событий позволяет направлять сообщения MQTT в службы Azure или веб-перехватчики для дальнейшей обработки. Соответственно, можно создавать комплексные решения с помощью данных Интернета вещей для анализа данных, хранения и визуализаций, среди других вариантов использования.

Схема маршрутизации сообщений MQTT.

Как использовать функцию маршрутизации?

Маршрутизация сообщений от клиентов в службу Azure или настраиваемую конечную точку позволяет максимально повысить преимущества этих данных. Ниже приведены некоторые из многих вариантов использования этой функции:

  • Анализ данных: извлечение и анализ перенаправленных сообщений от клиентов для оптимизации решения. Например, проанализируйте данные телеметрии компьютеров, чтобы предсказать, когда планируется обслуживание до сбоя, чтобы избежать задержек и дальнейшего ущерба.
  • Бессерверные приложения: активируют бессерверную функцию на основе перенаправленных сообщений от клиентов. Например, когда датчик движения обнаруживает движение, отправьте уведомление сотрудникам службы безопасности, чтобы устранить его.
  • Визуализации данных: создание визуализаций перенаправленных данных от клиентов для легкого представления и понимания данных, а также выделения тенденций и исходящих данных.

Конфигурация маршрутизации:

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

  • Раздел пространства имен в качестве назначения маршрутизации:
    • Создайте раздел пространства имен Сетки событий, где маршрутизовываются все сообщения MQTT.
    • Создайте подписку на событие типа push для маршрутизации этих сообщений в одну из поддерживаемых служб Azure или настраиваемых веб-перехватчиков или подписки на события типа очереди, чтобы извлечь сообщения непосредственно из раздела пространства имен через приложение.
    • Задайте конфигурацию маршрутизации, ссылающуюся на раздел, созданный на первом шаге.

Схема маршрутизации сообщений MQTT в разделы пространства имен.

Схема маршрутизации сообщений MQTT в пользовательские разделы.

Примечание.

Отключение доступа к общедоступной сети в пространстве имен приведет к сбою маршрутизации MQTT.

Разница между разделами пространства имен и настраиваемыми разделами в качестве назначения маршрутизации

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

Точка сравнения Раздел пространства имен Настраиваемый раздел
Пропускная способность Высокий, до 40 МБ/с (входящий трафик) и 80 МБ/с (исходящие данные) Низкая, до 5 МБ/с (входящий и исходящий трафик)
Доставка по запросу Да
Отправка доставки в Центры событий Да Да
Отправка в службы Azure (функции, веб-перехватчики, очереди и разделы служебная шина, гибридные подключения ретранслятора и очереди хранилища) Да
Хранение сообщений 7 дней 1 день
Требование назначения ролей Не требуется, так как брокер MQTT и раздел пространства имен находятся в одном пространстве имен. Требуется, так как пространство имен, в котором размещаются функции брокера MQTT, а настраиваемый раздел — разные ресурсы.

Требования настраиваемого раздела сетки событий для маршрутизации

Настраиваемый раздел сетки событий, используемый для маршрутизации, должен соответствовать следующим требованиям:

  • Его необходимо задать для использования схемы облачных событий версии 1.0.
  • Он должен находиться в том же регионе, что и пространство имен.
  • Перед применением конфигурации маршрутизации необходимо назначить роль "Отправитель данных сетки событий" самостоятельно или выбранному управляемому удостоверению в пользовательском разделе сетки событий.
    • На портале перейдите к созданному ресурсу раздела сетки событий.
    • В меню "Управление доступом (IAM)" выберите "Добавить назначение роли".
    • На вкладке "Роль" выберите "Отправитель данных сетки событий", а затем нажмите кнопку "Далее".
    • На вкладке "Члены" выберите +Выбрать участников, а затем введите имя пользователя AD в появившемся поле "Выбрать" (например, user@contoso.com).
    • Выберите имя пользователя AD, а затем нажмите кнопку "Проверить и назначить"

Настройка портала Azure

Чтобы настроить маршрутизацию, выполните следующие действия.

  • Перейдите в пространство имен в портал Azure.
  • В разделе "Маршрутизация" проверьте включение маршрутизации.
  • В разделе "Тип раздела" выберите раздел пространства имен или настраиваемый раздел
  • В разделе выберите раздел, созданный при маршрутизации всех сообщений MQTT.
  • Если выбран пользовательский раздел, появится раздел "Управляемое удостоверение для доставки". Выберите один из следующих параметров для удостоверения, который используется для проверки подлинности брокера MQTT при доставке сообщений MQTT в пользовательский раздел:
    • Нет: в этом случае необходимо назначить роль "Отправитель данных сетки событий" для себя в пользовательском разделе.
    • Назначаемое системой удостоверение: в этом случае необходимо включить назначаемое системой удостоверение в пространстве имен в качестве обязательного условия и назначить роль "Отправитель данных EventGrid" назначаемой системой удостоверения в пользовательском разделе.
    • Назначаемое пользователем удостоверение: в этом случае необходимо включить назначаемое пользователем удостоверение в пространстве имен в качестве обязательного условия и назначить роль "Отправитель данных EventGrid" выбранному удостоверению в пользовательском разделе.
      • Если выбрано удостоверение, назначаемое пользователем, появится раскрывающийся список, позволяющий выбрать нужное удостоверение.
  • Выберите Применить.

Снимок экрана: конфигурация маршрутизации через портал.

Инструкции по настройке обогащений см. в разделе "Конфигурация портала обогащения".

Настройка Azure CLI

az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json

NS.json

"properties": {
	"inputSchema": "CloudEventSchemaV1_0",
	"topicSpacesConfiguration": {
	    "state": "Enabled",           
	    "routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
        "routingIdentityInfo": {
                "type": "UserAssigned", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

Инструкции по настройке обогащений см. в разделе "Конфигурация интерфейса командной строки обогащения".

Поведение маршрутизации сообщений MQTT

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

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

Ошибка Описание ошибки Поведение
TopicNotFoundError Пользовательский раздел, настроенный для получения всех перенаправленных сообщений MQTT, был удален. Сетка событий удаляет сообщение MQTT, которое должно быть перенаправлено.
AuthenticationError Роль отправителя данных сетки событий для настраиваемого раздела, настроенного в качестве назначения для перенаправленных сообщений MQTT, была удалена. Сетка событий удаляет сообщение MQTT, которое должно быть перенаправлено.
TooManyRequests Число перенаправленных сообщений MQTT в секунду превышает ограничение публикации для настраиваемого раздела. Сетка событий повторите попытку маршрутизации сообщения MQTT.
ServiceError Непредвиденная ошибка сервера для операционной причины сервера. Сетка событий повторите попытку маршрутизации сообщения MQTT.

Во время повторных попыток сетка событий использует экспоненциальную политику повторных попыток для маршрутизации сообщений MQTT. Сетка событий повторяет попытку доставки по следующему расписанию, составленному из принципа эффективного использования ресурсов:

  • 10 seconds
  • 30 секунд
  • 1 минута
  • 5 мин
  • 10 минут
  • 30 минут
  • 1 ч
  • 3 часов
  • 6 часов
  • Каждые 12 часов

Если перенаправленное сообщение MQTT, которое было поставлено в очередь для повторной сборки успешно, сетка событий пытается удалить сообщение из очереди повторных попыток на основе наилучших усилий, но дубликаты по-прежнему могут быть получены.

Дальнейшие действия

Дополнительные сведения о маршрутизации см. в следующих статьях:

Краткое руководство.

Основные понятия: