Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве вы выполняете доставку по запросу с помощью curl команды оболочки Bash для публикации, получения и подтверждения событий. Используйте команды Azure CLI для создания ресурсов Сетки событий Azure. Эта статья подходит для быстрого тестирования функциональных возможностей доставки по запросу.
Для примеров кода, использующих SDK для работы с данными, см. следующие ресурсы:
- .NET: отправка и получение сообщений в теме пространства имен Azure Event Grid (.NET)
- Java: публикация событий в разделах пространства имен с помощью Java
- Java: получение событий с использованием pull-доставки на Java
Дополнительные сведения о модели доставки по запросу см. в статьях Концепции пространства имен Azure Event Grid и Доставка по запросу с помощью HTTP.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Предпосылки
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Для работы с этой статьей требуется Azure CLI версии 2.0.70 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
Создайте группу ресурсов
Создайте группу ресурсов Azure с помощью команды az group create. Используйте эту группу ресурсов, чтобы содержать все ресурсы, создаваемые в этой статье.
Ниже приведены общие действия по использованию Cloud Shell для выполнения команд.
- Выберите Open Cloud Shell , чтобы увидеть окно Azure Cloud Shell на правой панели.
- Скопируйте команду и вставьте ее в окно Azure Cloud Shell.
- Нажмите клавишу ВВОД, чтобы выполнить команду.
Объявите переменную для хранения имени группы ресурсов Azure. Укажите имя для группы ресурсов, заменив
<your-resource-group-name>на ваше значение.resource_group="<your-resource-group-name>"Создайте группу ресурсов. Вы можете изменить расположение на любое из доступных расположений в Azure.
az group create --name $resource_group --location eastus
Включить поставщик ресурсов Event Grid
Если это первый раз, когда вы используете Event Grid в подписке Azure, может потребоваться зарегистрировать поставщика ресурсов Event Grid. Выполните следующую команду для регистрации поставщика:
az provider register --namespace Microsoft.EventGridРегистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:
az provider show --namespace Microsoft.EventGrid --query "registrationState"Когда состояние
registrationStateизменится наRegistered, вы сможете продолжить работу.
Создайте пространство имен
Пространство имен Сетки событий предоставляет определяемую пользователем конечную точку, в которую вы публикуете события. В следующем примере создается пространство имен в группе ресурсов с помощью Bash в Azure Cloud Shell. Имя пространства имен должно быть уникальным, так как это часть записи системы доменных имен (DNS). Имя пространства имен должно соответствовать следующим правилам:
- Он должен находиться в диапазоне от 3 до 50 символов.
- Он должен быть уникальным для региона.
- Допустимы только символы: a-z, A-Z, 0-9 и -
- Он не должен начинаться с зарезервированных префиксов ключевого слова, таких как
Microsoft,SystemилиEventGrid.
Объявите переменную для хранения имени пространства имен Сетки событий. Укажите имя пространства имен, заменив
<your-namespace-name>на ваше значение.namespace="<your-namespace-name>"Создайте пространство имен. Возможно, потребуется изменить расположение, в котором он развернут.
az eventgrid namespace create --resource-group $resource_group --name $namespace --location eastus
Создание раздела пространства имен
Создайте раздел, содержащий все события, опубликованные в конечной точке пространства имен.
Объявите переменную для хранения имени раздела пространства имен. Укажите имя раздела пространства имен, заменив
<your-topic-name>на ваше значение.topic="<your-topic-name>"Создайте раздел пространства имен:
az eventgrid namespace topic create --resource-group $resource_group --name $topic --namespace-name $namespace
Создание подписки на событие
Создайте подписку на событие, установив режим доставки на очередь, поддерживающую доставку по запросу. Дополнительные сведения обо всех параметрах конфигурации см. в REST API сетки событий Azure.
Объявите переменную для хранения имени подписки на событие в теме пространства имен. Укажите имя подписки на события, заменив
<your-event-subscription-name>значением на ваше.event_subscription="<your-event-subscription-name>"Создайте подписку на событие в разделе пространства имен:
az eventgrid namespace topic event-subscription create --resource-group $resource_group --topic-name $topic --name $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
Отправка событий в раздел
Отправьте пример события в раздел пространства имен, выполнив действия, описанные в этом разделе.
Перечислить ключи доступа пространства имен
Получите ключи доступа, связанные с созданным пространством имен. Для проверки подлинности при публикации событий требуется один из них. Чтобы перечислить свои ключи, получите полный идентификатор ресурса пространства имен. Выполните следующую команду:
namespace_resource_id=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "id" --output tsv)Извлеките первый ключ из пространства имен:
key=$(az eventgrid namespace list-key --resource-group $resource_group --namespace-name $namespace --query "key1" --output tsv)
Публикация события
Получите имя хоста пространства имен. Он используется для создания конечной точки пространства имен HTTP, в которую отправляются события. Следующие операции были впервые доступны в версии
2023-06-01-previewAPI.publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-previewСоздайте пример события, соответствующего требованиям CloudEvents :
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} 'Элемент
data— это нагрузка вашего события. Любое значение JSON с правильным форматом может быть в этом поле. Свойства, которые могут перейти в событие, также называются атрибутами контекста. Дополнительные сведения см. в разделе CloudEvents.Используйте CURL для отправки события в раздел. CURL — это служебная программа, которая отправляет HTTP-запросы.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Примите событие
Вы получаете события из сетки событий с помощью конечной точки, которая ссылается на подписку на события.
Составьте конечную точку, выполнив следующую команду.
receive_operation_uri="https://"$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-previewОтправьте запрос на потребление события.
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
Подтверждение события
После получения события передайте это событие в приложение для обработки. После успешной обработки события больше не требуется, чтобы это событие было в подписке на события. Чтобы указать Event Grid удалить событие, его нужно подтвердить с помощью маркера блокировки, который вы получили в ответе на операцию получения.
В предыдущем разделе вы получили ответ, содержащий
brokerPropertiesобъект со свойствомlockToken. Скопируйте значение маркера блокировки и задайте его в переменной среды:lockToken="<paste-the-lock-token-here>"Создайте нагрузку операции подтверждения, содержащей маркер блокировки для мероприятия, которое требуется подтвердить.
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} 'Продолжайте сборку строки с URI операции подтверждения.
acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-previewНаконец, отправьте запрос на подтверждение полученного события:
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uriЕсли операция подтверждения выполняется до истечения срока действия маркера блокировки (300 секунд, заданных при создании подписки на событие), вы увидите ответ, как показано в следующем примере:
{"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
Следующий шаг
Дополнительные сведения о модели доставки по запросу см. в статье "Доставка по запросу с помощью HTTP".