Поделиться через


Краткое руководство. Маршрутизация пользовательских событий в хранилище очередей Azure с помощью Azure CLI

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

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

Если у вас еще нет подписки 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. Укажите уникальное имя для учетной записи служба хранилища Azure.

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Выполните следующие команды, чтобы создать учетную запись служба хранилища Azure и очередь (именованнуюeventqueue) в хранилище.

    queuename="eventqueue"
    
    az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS
    key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)"    
    az storage queue create --name $queuename --account-name $storagename --account-key $key
    

Создание подписки на события пользовательского раздела

В следующем примере создается подписка на созданный пользовательский раздел и передается идентификатор ресурса хранилища очередей для конечной точки. С помощью Azure CLI можно передать идентификатор хранилища очередей в качестве конечной точки. Конечная точка имеет следующий формат:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

Приведенный ниже скрипт получает идентификатор ресурса учетной записи хранения для очереди. Он создает идентификатор хранилища очередей и подписывается на раздел Сетки событий. В нем также задается тип storagequeue для конечной точки и используется ее идентификатор.

Важно!

Замените заполнитель даты окончания срока действия (<yyyy-mm-dd>) фактическим значением. Например, 2022-11-17 перед выполнением команды.

storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name mystoragequeuesubscription \
  --endpoint-type storagequeue \
  --endpoint $queueid \
  --expiration-date "<yyyy-mm-dd>"

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

При использовании REST API для создания подписки идентификатор учетной записи хранения и имя очереди передаются как отдельный параметр.

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

Отправка события в пользовательский раздел

Давайте активируем событие, чтобы увидеть, как сообщение отправляется в конечную точку при помощи службы "Сетка событий". Сначала получите 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

Перейдите к хранилищу очередей на портале. Вы увидите, что служба "Сетка событий" отправила эти три события в очередь.

Screenshot showing the list of messages in the queue that are received from Event Grid.

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

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

az group delete --name gridResourceGroup

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

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

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