Краткое руководство. Перенаправление пользовательских событий в Центры событий Azure с помощью Azure CLI и службы "Сетка событий"
Сетка событий Azure — это высокомасштабируемый и бессерверный брокер событий, который можно использовать для интеграции приложений с помощью событий. Сетка событий предоставляет события поддерживаемым обработчикам событий и Центры событий Azure является одним из них. В этой статье вы используете Azure CLI для следующих действий:
- Создание пользовательского раздела службы "Сетка событий".
- Создайте подписку Центры событий 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
Создание концентратора событий
Перед подпиской на пользовательский раздел необходимо создать конечную точку для сообщения о событии. Концентратор событий создается для сбора событий.
Укажите уникальное имя пространства имен Центров событий.
namespace="<EVENT HUBS NAMESPACE NAME>"
Выполните следующие команды, чтобы создать пространство имен Центров событий и концентратор событий, именованный
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
экземпляра Центров событий отображается та же диаграмма.
Как правило, Вы создаете приложение, которое извлекает события из концентратора событий. Чтобы создать приложение, которое получает сообщения от концентратора событий, см.:
- Основные сведения о получении сообщений с помощью узла Event Processor Host в .NET Standard
- Получение событий от Центров событий Azure с помощью Java
- Получение событий из Центров событий с помощью Apache Storm
Очистка ресурсов
Если вы планируете продолжить работу с этим событием, не удаляйте ресурсы, созданные при работе с этой статьей. В противном случае удалите соответствующие ресурсы с помощью следующей команды.
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")
- Потоковая передача больших данных в хранилище данных
Чтобы узнать, как публиковать события в Сетке событий и получать события из нее с использованием разных языков программирования, ознакомьтесь с приведенными ниже примерами.