Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описано, как использовать раздел пространства имен для маршрутизации данных из клиентов MQTT в Центры событий Azure. Ниже приведены общие шаги.
Предпосылки
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Если вы не знакомы с Сеткой событий, ознакомьтесь с обзором сетки событий перед началом работы с этим руководством.
- Зарегистрируйте поставщик ресурсов сетки событий в соответствии с инструкциями, описанными в разделе "Регистрация поставщика ресурсов сетки событий".
- Убедитесь, что порт 8883 открыт в брандмауэре. В этом примере из руководства используется протокол MQTT, который взаимодействует через порт 8883. Этот порт может быть заблокирован в некоторых корпоративных и образовательных сетевых средах.
Запуск Cloud Shell
Войдите на портал Azure.
Выберите ссылку, чтобы запустить Cloud Shell.
Переключитесь на Bash.
Создание пространства имен и темы для Event Grid
Чтобы создать пространство имен Event Grid и тему в этом пространстве имен, скопируйте следующий скрипт в редактор, замените заполнители фактическими значениями и выполните команды.
| Placeholder | Comments |
|---|---|
RESOURCEGROUPNAME |
Укажите имя создаваемой группы ресурсов. |
EVENTGRIDNAMESPACENAME |
Укажите имя пространства имен Сетки событий. |
REGION |
Укажите расположение, в котором нужно создать ресурсы. |
NAMESPACETOPICNAME |
Укажите имя раздела пространства имен. |
rgName="RESOURCEGROUPNAME"
nsName="EVENTGRIDNAMESPACENAME"
location="REGION"
nsTopicName="NAMESPACETOPICNAME"
az group create -n $rgName -l $location
az eventgrid namespace create -g $rgName -n $nsName -l $location --topic-spaces-configuration "{state:Enabled}" --identity "{type:SystemAssigned}"
az eventgrid namespace topic create -g $rgName --name $nsTopicName --namespace-name $nsName
Создайте пространство имен для Центра обработки событий и концентратор событий
Чтобы создать пространство имен Event Hubs и концентратор событий в этом пространстве имен, замените заполнители фактическими значениями и запустите следующие команды. Этот концентратор событий используется в подписке на события, созданной в этом руководстве, в качестве обработчика событий.
| Placeholder | Comments |
|---|---|
EVENTHUBSNAMESPACENAME |
Укажите имя создаваемого пространства имен Центров событий. |
EVENTHUBNAME |
Укажите имя экземпляра Event Hubs (концентратор событий), который необходимо создать в пространстве имен Event Hubs. |
ehubNsName="EVENTHUBSNAMESPACENAME`"
ehubName="EVENTHUBNAME"
az eventhubs namespace create --resource-group $rgName --name $ehubNsName
az eventhubs eventhub create --resource-group $rgName --namespace-name $ehubNsName --name $ehubName
Предоставьте пространству имен Event Grid доступ для отправки событий в концентратор событий.
Выполните следующую команду, чтобы добавить субъект-службу пространства имен Event Grid в роль отправителя данных Azure Event Hubs в пространстве имен Azure Event Hubs. Он позволяет пространству имен Сетки событий и его ресурсам отправлять события в концентраторы событий, находящиеся в пространстве имен Центров событий.
egNamespaceServicePrincipalObjectID=$(az ad sp list --display-name $nsName --query [].id -o tsv)
namespaceresourceid=$(az eventhubs namespace show -n $ehubNsName -g $rgName --query "{I:id}" -o tsv)
az role assignment create --assignee $egNamespaceServicePrincipalObjectID --role "Azure Event Hubs Data Sender" --scope $namespaceresourceid
Создание подписки на события с центрами событий в качестве конечной точки
Чтобы создать подписку на события для созданного ранее раздела пространства имен, замените заполнители фактическими значениями и выполните следующие команды. Эта подписка настроена для использования концентратора событий в качестве обработчика событий.
| Placeholder | Comments |
|---|---|
EVENTSUBSCRIPTIONNAME |
Укажите имя подписки на события для раздела пространства имен. |
eventSubscriptionName="EVENTSUBSCRIPTIONNAME"
eventhubresourceid=$(az eventhubs eventhub show -n $ehubName --namespace-name $ehubNsName -g $rgName --query "{I:id}" -o tsv)
az resource create --api-version 2023-06-01-preview --resource-group $rgName --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $eventSubscriptionName --parent namespaces/$nsName/topics/$nsTopicName --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventhubresourceid\"}}}}}}"
Настройка маршрутизации в пространстве имен Event Grid
Выполните следующие команды, чтобы включить маршрутизацию в пространстве имен для маршрутизации сообщений или событий в созданный ранее раздел пространства имен. Подписка на события в этом разделе пространства имен перенаправит эти события в концентратор событий, настроенный в качестве обработчика событий.
routeTopicResourceId=$(az eventgrid namespace topic show -g $rgName --namespace-name $nsName -n $nsTopicName --query "{I:id}" -o tsv)
az eventgrid namespace create -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled,'routeTopicResourceId':$routeTopicResourceId}"
Клиентский клиент, пространство разделов и привязки разрешений
Теперь создайте клиент для отправки нескольких сообщений для тестирования. На этом шаге вы создадите клиент, пространство тем с темой, а также связи издателя и подписчика.
Подробные инструкции см. в кратком руководстве: публикация и подписка на сообщения MQTT в пространстве имен Event Grid с помощью Azure CLI.
| Placeholder | Comments |
|---|---|
CLIENTNAME |
Укажите имя клиента, отправляющего несколько тестовых сообщений. |
CERTIFICATETHUMBPRINT |
Отпечаток сертификата клиента. В приведенном выше кратком руководстве приведены инструкции по созданию сертификата и извлечению отпечатка. Используйте тот же отпечаток в средстве MQTTX для отправки тестовых сообщений. |
TOPICSPACENAME |
Укажите имя создаваемого пространства тем. |
PUBLSHERBINDINGNAME |
Укажите имя для связывания с издателем. |
SUBSCRIBERBINDINGNAME |
Укажите имя привязки подписчика. |
clientName="CLIENTNAME"
clientAuthName="client1-authnID"
clientThumbprint="CERTIFICATETHUMBPRINT"
topicSpaceName="TOPICSPACENAME"
publisherBindingName="PUBLSHERBINDINGNAME"
subscriberBindingName="SUBSCRIBERBINDINGNAME"
az eventgrid namespace client create -g $rgName --namespace-name $nsName -n $clientName --authentication-name $clientAuthName --client-certificate-authentication "{validationScheme:ThumbprintMatch,allowed-thumbprints:[$clientThumbprint]}"
az eventgrid namespace topic-space create -g $rgName --namespace-name $nsName -n $topicSpaceName --topic-templates ['contosotopics/topic1']
az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $publisherBindingName --client-group-name '$all' --permission publisher --topic-space-name $topicSpaceName
az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $subscriberBindingName --client-group-name '$all' --permission subscriber --topic-space-name $topicSpaceName
Отправка сообщений с помощью MQTTX
Используйте MQTTX для отправки нескольких тестовых сообщений. Пошаговые инструкции см. в кратком руководстве по публикации и подписке на раздел MQTT.
Убедитесь, что Центр событий получил эти сообщения на странице Обзор пространства имен Центров событий.
Просмотр перенаправленных сообщений MQTT в Центрах событий с помощью запроса Stream Analytics
Перейдите к экземпляру Центров событий (концентратору событий) в подписке на события на портале Azure. Обработка данных из концентратора событий с помощью Stream Analytics. Дополнительные сведения см. в разделе "Обработка данных из Центров событий Azure" с помощью Stream Analytics — Центры событий Azure | Microsoft Learn. В запросе отображаются сообщения MQTT.
Дальнейшие шаги
Примеры кода см. в этом репозитории GitHub.