Руководство. Использование обогащения сообщений Центр Интернета вещей Azure
Обогащение сообщений — это возможность Центра Интернета вещей Azure помечать сообщения, добавляя к ним дополнительные сведения, перед их отправкой в целевую конечную точку. Одной из причин для использования обогащений сообщений является включение данных, с помощью которых можно упростить последующую обработку. Например, обогащение сообщений устройства с включением тега двойника устройства позволяет уменьшить нагрузку для клиентов путем отправки вызовов API двойнику устройства для получения этой информации. Дополнительные сведения см. в статье Общие сведения об обогащениях сообщений.
В первой части этого руководства вы узнали, как создавать пользовательские конечные точки и маршрутизировать сообщения в другие службы Azure. В этом руководстве вы увидите, как создать и настроить дополнительные ресурсы, необходимые для тестирования обогащений сообщений в центре Интернета вещей. Ресурсы включают второй контейнер хранилища для существующей учетной записи хранения (созданной в первой части руководства), в котором будут размещаться обогащенные сообщения, и маршрут отправки сообщений. После создания конфигураций для маршрутизации и обогащения сообщений вы воспользуетесь приложением для отправки сообщений в центр Интернета вещей. Центр затем направит их в оба контейнера учетной записи хранения. Обогащаются только те сообщения, которые отправляются в конечную точку для контейнера enriched учетной записи хранения.
Вот какие шаги выполняются в этом руководстве:
- Создайте второй контейнер в учетной записи хранения.
- Создайте еще одну пользовательскую конечную точку и перенаправьте в нее сообщения из центра Интернета вещей.
- Настройте обогащения сообщений, которые направляются в новую конечную точку.
- Запуск приложения, которое имитирует устройство Интернета вещей, отправляющее сообщения в центр.
- Просмотрите результаты и убедитесь, что к целевым сообщениям применяются обогащения.
Необходимые компоненты
У вас должна быть подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Необходимо выполнить инструкции из раздела Руководство. Отправка данных устройства в службу хранилища Azure с помощью маршрутизации сообщений центра Интернета вещей и сохранить ресурсы, созданные для этого руководства.
Убедитесь, что в брандмауэре открыт порт 8883. Пример устройства в этом руководстве использует протокол MQTT, который передает данные через порт 8883. В некоторых корпоративных и академических сетях этот порт может быть заблокирован. Дополнительные сведения и способы устранения этой проблемы см. в разделе о подключении к Центру Интернета вещей по протоколу MQTT.
Для портала Azure нет других предварительных требований.
Создание второго контейнера в учетной записи хранения
В первой части этого руководства вы создали учетную запись хранения и контейнер для перенаправленных сообщений. Теперь необходимо создать второй контейнер для обогащенных сообщений.
На портале Azure найдите раздел Учетные записи хранения.
Выберите учетную запись, созданную ранее.
В меню учетной записи хранения выберите Контейнеры в разделе Хранилище данных.
Выберите Контейнер, чтобы создать контейнер.
Присвойте контейнеру
enriched
имя и нажмите кнопку "Создать".
Маршрутизация сообщений во вторую конечную точку
Создайте вторую конечную точку и маршрут для обогащенных сообщений.
Внимание
В этой статье содержатся шаги по подключению к службе с помощью подписанного URL-адреса. Этот метод проверки подлинности удобнее для тестирования и оценки, но проверка подлинности в службе с помощью идентификатора Microsoft Entra или управляемых удостоверений является более безопасным подходом. Дополнительные сведения см. в статье "Рекомендации > по безопасности cloud security".
Найдите нужный Центр Интернета вещей на портале Azure.
В меню ресурсов в разделе "Параметры Центра" выберите маршрутизацию сообщений и нажмите кнопку "Добавить".
На вкладке "Конечная точка" создайте конечную точку хранилища, указав следующие сведения:
Параметр Значение Тип конечной точки Выберите Хранилище. Имя конечной точки Введите ContosoStorageEndpointEnriched
.Контейнер хранилища Azure Щелкните Выберите контейнер. Следуйте инструкциям, чтобы выбрать учетную запись хранения и обогащенный контейнер, созданный в предыдущем разделе. Кодирование Выберите JSON. Если это поле неактивно, регион вашей учетной записи хранения не поддерживает JSON. В этом случае продолжайте использовать AVRO по умолчанию. Примите значения по умолчанию для остальных параметров и нажмите кнопку "Создать+ далее".
Продолжайте создавать новый маршрут, после добавления конечной точки хранилища. Укажите следующую информацию для нового маршрута:
Параметр Значение Имя ContosoStorageRouteEnriched Источник данных Убедитесь, что в раскрывающемся списке выбраны Сообщения телеметрии устройства. Включить маршрут Убедитесь в том, что для этого поля задано значение enabled
.Маршрутизация запроса Введите level="storage"
как строку запроса.Выберите " Создать и добавить обогащения".
Добавление обогащения сообщений в новую конечную точку
Создайте три обогащения сообщений, которые будут перенаправлены в контейнер хранилища enriched.
На вкладке "Обогащение" мастера добавления маршрута добавьте три обогащения сообщений для сообщений, поступающих в конечную точку для контейнера хранилища, который называется обогащенным.
Добавьте эти значения в качестве обогащения сообщений для конечной точки ContosoStorageEndpointEnriched:
Имя. Значение myIotHub $hubname
DeviceLocation $twin.tags.location
(предполагается, что двойник устройства снабжен тегом location)customerID 6ce345b8-1e4a-411e-9398-d34587459a3a
По завершении обогащения должны выглядеть примерно так:
Нажмите кнопку "Добавить ", чтобы добавить обогащения сообщений.
Теперь у вас есть обогащения сообщений, настроенные для всех сообщений, перенаправленных в конечную точку, созданную для обогащенных сообщений. Если вы не хотите добавлять тег расположения в двойник устройства, можно перейти к разделу Тестирование обогащений сообщений, чтобы продолжить изучение этого руководства.
Добавление тега location к двойнику устройства
Одно из обогащенных сообщений, настроенных в центре Интернета вещей, позволяет указать ключ DeviceLocation, значение которого определяется следующим путем двойника устройства: $twin.tags.location
. Если у двойника устройства нет тега расположения, путь к двойнику $twin.tags.location
будет помечен как строка для ключа DeviceLocation в обогащениях сообщений.
Выполните указанные ниже действия, чтобы добавить тег расположения для двойника устройства:
Перейдите в Центр Интернета вещей на портале Azure.
Выберите устройства в меню навигации центра Интернета вещей, а затем выберите свое устройство.
Откройте вкладку Двойник устройства в верхней части страницы устройства и добавьте указанную ниже строку непосредственно перед закрывающей фигурной скобкой в нижней части двойника. Затем выберите Сохранить.
, "tags": {"location": "Plant 43"}
Совет
Подождите примерно пять минут, прежде чем переходить к следующему разделу. Обновление двойника устройства может занять некоторое время, после чего изменения будут отражены в значениях обогащенных сообщений.
Дополнительные сведения о том, как пути двойника устройства обрабатываются с помощью обогащенных сообщений, см. в разделе Ограничения обогащения сообщений. Узнать больше о двойниках устройств можно в разделе Общие сведения о двойниках устройств и их использование в Центре Интернета вещей.
Тестирование обогащений сообщений
Теперь, когда для конечной точки ContosoStorageEndpointEnriched настроены обогащения сообщений, запустите приложение имитированного устройства, чтобы отправить сообщения в центр Интернета вещей. На этом этапе маршрутизация сообщений настроена следующим образом:
Сообщения, направляемые в конечную точку хранилища, созданную в первой части руководства, не будут обогащаться и будут сохраняться в созданном контейнере хранилища.
Сообщения, направляемые в конечную точку службы хранилища ContosoStorageEndpointEnriched, будут обогащаться и будут сохраняться в контейнере enriched учетной записи хранения.
Если вы еще не запустили консольное приложение SimulatedDevice из первой части этого руководства, запустите его:
Совет
Если вы выполняете действия Azure CLI для этого руководства, запустите пример кода в отдельном сеансе. Таким образом, вы можете разрешить примеру кода продолжать работу, пока вы выполняете остальные действия интерфейса командной строки.
В папке примера перейдите к папке
/iot-hub/Tutorials/Routing/SimulatedDevice/
.Определения переменных, которые вы обновили ранее, по-прежнему должны быть допустимыми. Если это не так, измените их в файле
Program.cs
:Найдите определения переменных в верхней части класса Программы. Обновите следующие переменные с помощью собственных данных:
- s_myDeviceId. Идентификатор устройства, назначенный при регистрации устройства в центре Интернета вещей.
- s_iotHubUri: имя узла центра Интернета вещей, которое принимает формат
IOTHUB_NAME.azure-devices.net
. - s_deviceKey. Первичный ключ из сведений об удостоверении устройства.
Сохранить и закрыть файл.
Запустите пример кода:
dotnet run
Дайте консольному приложению поработать несколько минут и просмотрите данные:
Войдите в свою учетную запись хранения на портале Azure.
Выберите Обозреватель хранилища в меню навигации. Выберите Контейнеры 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"
}
Очистка ресурсов
Чтобы удалить все ресурсы, которые были созданы в обоих частях этого руководства, удалите группу ресурсов. При этом будут также удалены все ресурсы, содержащиеся в группе. Если вы не хотите удалять всю группу ресурсов, можно выбрать отдельные ресурсы для удаления.
- В портале Azure перейдите к группе ресурсов, содержащей Центр Интернета вещей и учетную запись хранения для этого руководства.
- Просмотрите все ресурсы, которые находятся в группе ресурсов, чтобы определить, какие ресурсы необходимо очистить.
- Если вы хотите удалить ресурс, щелкните Удалить группу ресурсов.
- Если требуется удалить только определенный ресурс, установите флажки рядом с каждым именем ресурса, чтобы выбрать те, которые требуется удалить. Затем выберите Удалить.
Следующие шаги
При работе с этим руководством вы настроили и проверили обогащение сообщений Центра Интернета вещей по мере их маршрутизации в конечную точку.
Дополнительные сведения об обогащении сообщений см. в статье Обзор обогащений сообщений.
Чтобы получить дополнительные сведения о Центре Интернета вещей, перейдите к следующему руководству.