Краткое руководство. Маршрутизация пользовательских событий в хранилище очередей Azure с помощью Azure CLI
Сетка событий Azure — это высокомасштабируемый и бессерверный брокер событий, который можно использовать для интеграции приложений с помощью событий. Служба "Сетка событий" предоставляет события для поддерживаемых обработчиков событий, а хранилище очередей Azure — одно из них. В этой статье вы используете Azure CLI для следующих действий:
- Создание пользовательского раздела службы "Сетка событий".
- Создайте подписку очереди Azure для пользовательского раздела.
- Отправка примеров событий в пользовательский раздел.
- Убедитесь, что эти события доставлены в хранилище очередей Azure.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Создание или изменение группы ресурсов
Темами событий сетки являются ресурсы Azure, которые необходимо поместить в группу ресурсов Azure. Группа ресурсов Azure — это логическая коллекция, в которой выполняется развертывание и администрирование ресурсов Azure.
Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем gridResourceGroup в расположении westus2.
Примечание.
Выберите " Попробовать" рядом с примером ИНТЕРФЕЙСА командной строки, чтобы запустить 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>"
Выполните следующие команды, чтобы создать учетную запись служба хранилища 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
Перейдите к хранилищу очередей на портале. Вы увидите, что служба "Сетка событий" отправила эти три события в очередь.
Очистка ресурсов
Если вы планируете продолжить работу с этим событием, не удаляйте ресурсы, созданные при работе с этой статьей. В противном случае удалите соответствующие ресурсы с помощью следующей команды.
az group delete --name gridResourceGroup
Следующие шаги
Теперь, когда вы знаете, как создавать темы и подписки на события, ознакомьтесь с дополнительными сведениями о сетке событий, которые могут помочь вам:
- An introduction to Azure Event Grid (Общие сведения о службе "Сетка событий Azure")
- Перенаправление событий хранилища BLOB-объектов в пользовательскую конечную веб-точку (предварительная версия)
- Monitor virtual machine changes with Azure Event Grid and Logic Apps (Отслеживание изменений виртуальной машины с помощью Azure Logic Apps и службы "Сетка событий Azure")
- Потоковая передача больших данных в хранилище данных
Чтобы узнать, как публиковать события в Сетке событий и получать события из нее с использованием разных языков программирования, ознакомьтесь с приведенными ниже примерами.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по