Краткое руководство. Маршрутизация пользовательских событий в концентратор событий с помощью сетки событий и Azure CLI
Сетка событий Azure — это высокомасштабируемый и бессерверный брокер событий, который можно использовать для интеграции приложений с помощью событий. Сетка событий предоставляет события для поддерживаемых обработчиков событий, и Центры событий Azure является одним из них.
В этом кратком руководстве вы используете Azure CLI для создания настраиваемого раздела Сетки событий и подписки Центров событий для этого раздела. Затем вы отправляете примеры событий в пользовательский раздел и убедитесь, что эти события доставляются в концентратор событий.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Создание или изменение группы ресурсов
Разделы сетки событий — это ресурсы Azure, и они должны быть помещены в группу ресурсов Azure. Группа ресурсов Azure — это логическая коллекция, в которой выполняется развертывание и администрирование ресурсов Azure.
Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем gridResourceGroup
в расположении именем westus2
.
Выберите Open Cloud Shell, чтобы открыть Azure Cloud Shell на правой панели. Нажмите кнопку "Копировать ", чтобы скопировать команду, вставьте ее в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить команду.
az group create --name gridResourceGroup --location westus2
Включение поставщика ресурсов службы "Сетка событий"
Если вы еще не использовали службу "Сетка событий" в подписке Azure, вам, возможно, потребуется зарегистрировать поставщик ресурсов этой службы. Выполните следующую команду для регистрации поставщика:
az provider register --namespace Microsoft.EventGrid
Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Когда состояние
registrationState
изменится наRegistered
, вы сможете продолжить работу.
Создание пользовательской темы
Раздел сетки событий содержит определяемую пользователем конечную точку, в которой можно размещать свои события. В приведенном ниже примере создается пользовательский раздел в вашей группе ресурсов.
Замените <TOPIC NAME>
уникальным именем для вашего пользовательского раздела. Имя раздела сетки событий должно быть уникальным, так как запись системы доменных имен (DNS) представляет ее.
Укажите имя раздела:
topicname="<TOPIC NAME>"
Выполните следующую команду, чтобы создать раздел:
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Создание концентратора событий
Перед подпиской на пользовательский раздел создайте конечную точку для сообщения о событии. Концентратор событий создается для сбора событий.
Укажите уникальное имя пространства имен Центров событий:
namespace="<EVENT HUBS NAMESPACE NAME>"
Выполните следующие команды, чтобы создать пространство имен Центров событий и концентратор событий, именованный
demohub
в этом пространстве имен:hubname=demohub az eventhubs namespace create --name $namespace --resource-group gridResourceGroup az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
Создание подписки на события пользовательского раздела
Вы подписываетесь на раздел "Сетка событий", чтобы сообщить сетке событий, какие события нужно отслеживать. Следующий пример подписывается на созданный пользовательский раздел и передает идентификатор ресурса концентратора событий для конечной точки. Конечная точка находится в следующем формате:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>
Следующий скрипт получает идентификатор ресурса для концентратора событий и подписывается на раздел сетки событий. В нем также задается тип eventhub
для конечной точки и используется идентификатор концентратора событий для нее.
hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name subtoeventhub \
--endpoint-type eventhub \
--endpoint $hubid
Учетная запись, которая создает подписку на события, должна иметь доступ на запись в концентратор событий.
Отправка события в пользовательский раздел
Активируйте событие, чтобы увидеть, как сетка событий распространяет сообщение в конечную точку. Сначала получите URL-адрес и ключ для пользовательского раздела:
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
Для простоты в этой статье вы используете примеры данных событий для отправки в пользовательский раздел. Как правило, приложение или служба Azure отправляют данные о событии.
Средство cURL отправляет HTTP-запросы. В этой статье вы используете cURL для отправки события в пользовательский раздел. В следующем примере три события отправляются в раздел "Сетка событий".
for i in 1 2 3
do
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done
В портал Azure на странице обзора пространства имен Центров событий обратите внимание, что сетка событий отправила эти три события в концентратор событий. На странице обзора экземпляра demohub
Центров событий отображается та же диаграмма.
Как правило, создается приложение, которое извлекает сообщения о событиях из концентратора событий. Дополнительные сведения см. в разделе:
- Начало приема сообщений с узлом обработчика событий в .NET Standard
- Получение событий из Центры событий Azure с помощью Java
- Получение событий из Центров событий с помощью Apache Storm
Очистка ресурсов
Если вы планируете продолжить работу с этим событием, не убирайте ресурсы, созданные в этой статье. В противном случае используйте следующую команду, чтобы удалить ресурсы:
az group delete --name gridResourceGroup
Связанный контент
Теперь, когда вы знаете, как создавать темы и подписки на события, ознакомьтесь с дополнительными сведениями о сетке событий, которые могут помочь вам:
- An introduction to Azure Event Grid (Общие сведения о службе "Сетка событий Azure")
- Маршрутизация событий Хранилище BLOB-объектов Azure в пользовательскую веб-конечную точку
- Monitor virtual machine changes with Azure Event Grid and Logic Apps (Отслеживание изменений виртуальной машины с помощью Azure Logic Apps и службы "Сетка событий Azure")
- Потоковая передача больших данных в хранилище данных
Сведения о публикации событий и использовании событий из сетки событий с помощью различных языков программирования см. в следующих примерах: