Краткое руководство. Маршрутизация пользовательских событий в концентратор событий с помощью сетки событий и 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

Включение поставщика ресурсов службы "Сетка событий"

  1. Если вы еще не использовали службу "Сетка событий" в подписке Azure, вам, возможно, потребуется зарегистрировать поставщик ресурсов этой службы. Выполните следующую команду для регистрации поставщика:

    az provider register --namespace Microsoft.EventGrid
    
  2. Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Когда состояние registrationState изменится на Registered, вы сможете продолжить работу.

Создание пользовательской темы

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

Замените <TOPIC NAME> уникальным именем для вашего пользовательского раздела. Имя раздела сетки событий должно быть уникальным, так как запись системы доменных имен (DNS) представляет ее.

  1. Укажите имя раздела:

    topicname="<TOPIC NAME>"
    
  2. Выполните следующую команду, чтобы создать раздел:

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Создание концентратора событий

Перед подпиской на пользовательский раздел создайте конечную точку для сообщения о событии. Концентратор событий создается для сбора событий.

  1. Укажите уникальное имя пространства имен Центров событий:

    namespace="<EVENT HUBS NAMESPACE NAME>"
    
  2. Выполните следующие команды, чтобы создать пространство имен Центров событий и концентратор событий, именованный 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 Центров событий отображается та же диаграмма.

Снимок экрана: страница портала с числом входящих сообщений 3.

Как правило, создается приложение, которое извлекает сообщения о событиях из концентратора событий. Дополнительные сведения см. в разделе:

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

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

az group delete --name gridResourceGroup

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

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