Руководство. Использование обогащения сообщений Центр Интернета вещей Azure

Обогащение сообщений — это возможность Центра Интернета вещей Azure помечать сообщения, добавляя к ним дополнительные сведения, перед их отправкой в целевую конечную точку. Одной из причин для использования обогащений сообщений является включение данных, с помощью которых можно упростить последующую обработку. Например, обогащение сообщений устройства с включением тега двойника устройства позволяет уменьшить нагрузку для клиентов путем отправки вызовов API двойнику устройства для получения этой информации. Дополнительные сведения см. в статье Общие сведения об обогащениях сообщений.

В первой части этого руководства вы узнали, как создавать пользовательские конечные точки и маршрутизировать сообщения в другие службы Azure. В этом руководстве вы увидите, как создать и настроить дополнительные ресурсы, необходимые для тестирования обогащений сообщений в центре Интернета вещей. Ресурсы включают второй контейнер хранилища для существующей учетной записи хранения (созданной в первой части руководства), в котором будут размещаться обогащенные сообщения, и маршрут отправки сообщений. После создания конфигураций для маршрутизации и обогащения сообщений вы воспользуетесь приложением для отправки сообщений в центр Интернета вещей. Центр затем направит их в оба контейнера учетной записи хранения. Обогащаются только те сообщения, которые отправляются в конечную точку для контейнера enriched учетной записи хранения.

Вот какие шаги выполняются в этом руководстве:

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

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

Для портала Azure нет других предварительных требований.

Создание второго контейнера в учетной записи хранения

В первой части этого руководства вы создали учетную запись хранения и контейнер для перенаправленных сообщений. Теперь необходимо создать второй контейнер для обогащенных сообщений.

  1. На портале Azure найдите раздел Учетные записи хранения.

  2. Выберите учетную запись, созданную ранее.

  3. В меню учетной записи хранения выберите Контейнеры в разделе Хранилище данных.

  4. Выберите Контейнер, чтобы создать контейнер.

    Снимок экрана: создание контейнера хранилища.

  5. Присвойте контейнеру enrichedимя и нажмите кнопку "Создать".

Маршрутизация сообщений во вторую конечную точку

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

  1. Найдите нужный Центр Интернета вещей на портале Azure.

  2. В меню ресурсов в разделе "Параметры Центра" выберите маршрутизацию сообщений и нажмите кнопку "Добавить".

    Снимок экрана: расположение кнопки

  3. На вкладке "Конечная точка" создайте конечную точку служба хранилища, указав следующие сведения:

    Параметр Значение
    Тип конечной точки Выберите Хранилище.
    Имя конечной точки Введите ContosoStorageEndpointEnriched.
    Контейнер хранилища Azure Щелкните Выберите контейнер. Следуйте инструкциям, чтобы выбрать учетную запись хранения и обогащенный контейнер, созданный в предыдущем разделе.
    Кодирование Выберите JSON. Если это поле неактивно, регион вашей учетной записи хранения не поддерживает JSON. В этом случае продолжайте использовать AVRO по умолчанию.

    Снимок экрана: выбор контейнера для конечной точки.

  4. Примите значения по умолчанию для остальных параметров и нажмите кнопку "Создать+ далее".

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

    Параметр Значение
    Имя ContosoStorageRouteEnriched
    Источник данных Убедитесь, что в раскрывающемся списке выбраны Сообщения телеметрии устройства.
    Включить маршрут Убедитесь в том, что для этого поля задано значение enabled.
    Маршрутизация запроса Введите level="storage" как строку запроса.

    Снимок экрана: сохранение информации о маршрутизации запроса.

  6. Выберите " Создать и добавить обогащения".

Добавление обогащения сообщений в новую конечную точку

Создайте три обогащения сообщений, которые будут перенаправлены в контейнер хранилища enriched.

  1. На вкладке "Обогащение" мастера добавления маршрута добавьте три обогащения сообщений для сообщений, поступающих в конечную точку для контейнера хранилища, который называется обогащенным.

    Добавьте эти значения в качестве обогащения сообщений для конечной точки Contoso служба хранилища EndpointEnriched:

    Имя. Значение
    myIotHub $hubname
    DeviceLocation $twin.tags.location (предполагается, что двойник устройства снабжен тегом location)
    customerID 6ce345b8-1e4a-411e-9398-d34587459a3a

    По завершении обогащения должны выглядеть примерно так:

    Снимок экрана: таблица со всеми добавленными обогащениями.

  2. Нажмите кнопку "Добавить ", чтобы добавить обогащения сообщений.

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

Добавление тега location к двойнику устройства

Одно из обогащенных сообщений, настроенных в центре Интернета вещей, позволяет указать ключ DeviceLocation, значение которого определяется следующим путем двойника устройства: $twin.tags.location. Если у двойника устройства нет тега расположения, путь к двойнику $twin.tags.location будет помечен как строка для ключа DeviceLocation в обогащениях сообщений.

Выполните указанные ниже действия, чтобы добавить тег расположения для двойника устройства:

  1. Перейдите в Центр Интернета вещей на портале Azure.

  2. Выберите устройства в меню навигации центра Интернета вещей, а затем выберите свое устройство.

  3. Откройте вкладку Двойник устройства в верхней части страницы устройства и добавьте указанную ниже строку непосредственно перед закрывающей фигурной скобкой в нижней части двойника. Затем выберите Сохранить.

      , "tags": {"location": "Plant 43"}
    

    Снимок экрана: добавление тега местоположения к двойнику устройства на портале Azure.

Совет

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

Дополнительные сведения о том, как пути двойника устройства обрабатываются с помощью обогащенных сообщений, см. в разделе Ограничения обогащения сообщений. Узнать больше о двойниках устройств можно в разделе Общие сведения о двойниках устройств и их использование в Центре Интернета вещей.

Тестирование обогащений сообщений

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

  • Сообщения, направляемые в конечную точку хранилища, созданную в первой части руководства, не будут обогащаться и будут сохраняться в созданном контейнере хранилища.

  • Сообщения, направляемые в конечную точку службы хранилища ContosoStorageEndpointEnriched, будут обогащаться и будут сохраняться в контейнере enriched учетной записи хранения.

Если вы еще не запустили консольное приложение SimulatedDevice из первой части этого руководства, запустите его:

Совет

Если вы выполняете действия Azure CLI для этого руководства, запустите пример кода в отдельном сеансе. Таким образом, вы можете разрешить примеру кода продолжать работу, пока вы выполняете остальные действия интерфейса командной строки.

  1. В папке примера перейдите к папке /iot-hub/Tutorials/Routing/SimulatedDevice/.

  2. Определения переменных, которые вы обновили ранее, по-прежнему должны быть допустимыми. Если это не так, измените их в файле Program.cs:

    1. Найдите определения переменных в верхней части класса Программы. Обновите следующие переменные с помощью собственных данных:

      • s_myDeviceId. Идентификатор устройства, назначенный при регистрации устройства в центре Интернета вещей.
      • s_iotHubUri: имя узла центра Интернета вещей, которое принимает формат IOTHUB_NAME.azure-devices.net.
      • s_deviceKey. Первичный ключ из сведений об удостоверении устройства.
    2. Сохранить и закрыть файл.

  3. Запустите пример кода:

    dotnet run
    

Дайте консольному приложению поработать несколько минут и просмотрите данные:

  1. Войдите в свою учетную запись хранения на портале Azure.

  2. Выберите Обозреватель хранилища в меню навигации. Выберите Контейнеры BLOB-объектов, чтобы просмотреть два контейнера, созданные в ходе работы с этими руководствами.

    Снимок экрана: доступ к контейнерам BLOB-объектов в учетной записи хранения.

Сообщения в контейнере с именем enriched содержат включенные обогащения. Сообщения в контейнере, созданном ранее, представляют собой необработанные сообщения без обогащений. Раскройте содержимое контейнера enriched до нижнего уровня и откройте последний файл сообщения. Затем сделайте то же самое для другого контейнера, чтобы убедиться, что данные в одном из них обогащены, а в другом — нет.

Если просмотреть обогащенные сообщения, можно увидеть поле "myIotHub" с именем центра, расположением и идентификатором клиента, например:

{
  "EnqueuedTimeUtc":"2019-05-10T06:06:32.7220000Z",
  "Properties":
  {
    "level":"storage",
    "myIotHub":"{your hub name}",
    "DeviceLocation":"Plant 43",
    "customerID":"6ce345b8-1e4a-411e-9398-d34587459a3a"
  },
  "SystemProperties":
  {
    "connectionDeviceId":"Contoso-Test-Device",
    "connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
    "connectionDeviceGenerationId":"636930642531278483",
    "enqueuedTime":"2019-05-10T06:06:32.7220000Z"
  },"Body":"eyJkZXZpY2VJZCI6IkNvbnRvc28tVGVzdC1EZXZpY2UiLCJ0ZW1wZXJhdHVyZSI6MjkuMjMyMDE2ODQ4MDQyNjE1LCJodW1pZGl0eSI6NjQuMzA1MzQ5NjkyODQ0NDg3LCJwb2ludEluZm8iOiJUaGlzIGlzIGEgc3RvcmFnZSBtZXNzYWdlLiJ9"
}

Очистка ресурсов

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

  1. В портале Azure перейдите к группе ресурсов, содержащей Центр Интернета вещей и учетную запись хранения для этого руководства.
  2. Просмотрите все ресурсы, которые находятся в группе ресурсов, чтобы определить, какие ресурсы необходимо очистить.
    • Если вы хотите удалить ресурс, щелкните Удалить группу ресурсов.
    • Если требуется удалить только определенный ресурс, установите флажки рядом с каждым именем ресурса, чтобы выбрать те, которые требуется удалить. Затем выберите Удалить.

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

При работе с этим руководством вы настроили и проверили обогащение сообщений Центра Интернета вещей по мере их маршрутизации в конечную точку.

Дополнительные сведения об обогащении сообщений см. в статье Обзор обогащений сообщений.

Чтобы получить дополнительные сведения о Центре Интернета вещей, перейдите к следующему руководству.