Краткое руководство. Маршрутизация пользовательских событий в очередь с помощью сетки событий и 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
Создать очередь
Перед подпиской на пользовательский раздел создайте конечную точку для сообщения о событии. Вы создаете очередь для сбора событий.
Укажите уникальное имя учетной записи хранения Azure:
storagename="<STORAGE ACCOUNT NAME>"
Выполните следующие команды, чтобы создать учетную запись хранения и очередь (именованную
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>
) фактическим значением года, месяца и дня.
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
Перейдите в очередь в портал Azure и обратите внимание, что сетка событий отправила эти три события в очередь.
Очистка ресурсов
Если вы планируете продолжить работу с этим событием, не убирайте ресурсы, созданные в этой статье. В противном случае используйте следующую команду, чтобы удалить ресурсы:
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")
- Потоковая передача больших данных в хранилище данных
Сведения о публикации событий и использовании событий из сетки событий с помощью различных языков программирования см. в следующих примерах: