Краткое руководство. Перенаправление пользовательских событий в Центры событий Azure с помощью Azure CLI и службы "Сетка событий"

Сетка событий Azure — это высокомасштабируемый и бессерверный брокер событий, который можно использовать для интеграции приложений с помощью событий. Сетка событий предоставляет события поддерживаемым обработчикам событий и Центры событий Azure является одним из них. В этой статье вы используете Azure CLI для следующих действий:

  1. Создание пользовательского раздела службы "Сетка событий".
  2. Создайте подписку Центры событий Azure для настраиваемого раздела.
  3. Отправка примеров событий в пользовательский раздел.
  4. Убедитесь, что эти события доставляются в концентратор событий.

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

Создание или изменение группы ресурсов

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

Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем gridResourceGroup в расположении westus2.

Примечание.

Выберите " Попробовать" рядом с примером ИНТЕРФЕЙСА командной строки, чтобы запустить 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 экземпляра Центров событий отображается та же диаграмма.

Image showing the portal page with incoming message count as 3.

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

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

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

az group delete --name gridResourceGroup

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

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

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