Share via


Guia de início rápido: rotear eventos personalizados para Hubs de Eventos do Azure com a CLI do Azure e a Grade de Eventos

A Grade de Eventos do Azure é um agente de eventos altamente escalável e sem servidor que você pode usar para integrar aplicativos usando eventos. A Grade de Eventos entrega eventos a manipuladores de eventos com suporte e os Hubs de Eventos do Azure são um deles. Neste artigo, você usa a CLI do Azure para as seguintes etapas:

  1. Crie um tópico personalizado do Event Grid.
  2. Crie uma assinatura dos Hubs de Eventos do Azure para o tópico personalizado.
  3. Envie exemplos de eventos para o tópico personalizado.
  4. Verifique se esses eventos são entregues ao hub de eventos.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um grupo de recursos

Os tópicos do Event Grid são recursos do Azure e têm de ser colocados num grupo de recursos do Azure. Um grupo de recursos é uma coleção lógica na qual os recursos do Azure são implementados e geridos.

Crie um grupo de recursos com o comando az group create. O exemplo seguinte cria um grupo de recursos com o nome gridResourceGroup na localização westus2.

Nota

Selecione Experimentar ao lado do exemplo da CLI para iniciar o Cloud Shell no painel direito. Selecione o botão Copiar para copiar o comando, cole-o na janela do Cloud Shell e pressione ENTER para executar o comando.

az group create --name gridResourceGroup --location westus2

Habilitar o provedor de recursos da Grade de Eventos

  1. Se você não tiver usado anteriormente a Grade de Eventos em sua assinatura do Azure, talvez seja necessário registrar o provedor de recursos da Grade de Eventos. Execute o seguinte comando para registar o fornecedor:

    az provider register --namespace Microsoft.EventGrid
    
  2. Pode demorar algum tempo até que o registo termine. Para verificar o status, execute o seguinte comando:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Quando registrationState está Registered, está pronto para continuar.

Criar um tópico personalizado

Um tópico de Grade de Eventos fornece um ponto de extremidade definido pelo usuário no qual você posta seus eventos. O exemplo seguinte cria o tópico personalizado no seu grupo de recursos. Substitua <topic_name> por um nome exclusivo para o seu tópico personalizado. O nome do tópico Grade de Eventos deve ser exclusivo porque é representado por uma entrada DNS (Sistema de Nomes de Domínio).

  1. Especifique um nome para o tópico.

    topicname="<TOPIC NAME>"
    
  2. Execute o seguinte comando para criar o tópico.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Criar um hub de eventos

Antes de subscrever o tópico personalizado, vamos criar o ponto final para a mensagem de evento. Cria um hub de eventos para a recolha de eventos.

  1. Especifique um nome exclusivo para o namespace Hubs de Eventos.

    namespace="<EVENT HUBS NAMESPACE NAME>"
    
  2. Execute os comandos a seguir para criar um namespace de Hubs de Eventos e um hub de eventos nomeado demohub nesse namespace.

    hubname=demohub
    
    az eventhubs namespace create --name $namespace --resource-group gridResourceGroup
    az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
    

Subscrever um tópico personalizado

Você se inscreve em um tópico da Grade de Eventos para informar à Grade de Eventos quais eventos deseja acompanhar. O exemplo a seguir se inscreve no tópico personalizado que você criou e passa a ID de recurso do hub de eventos para o ponto de extremidade. O ponto final está no formato:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>

O script a seguir obtém a ID do recurso para o hub de eventos e se inscreve em um tópico da Grade de Eventos. Define o tipo de ponto final como eventhub e utiliza o ID do hub de eventos para o ponto final.

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

A conta que cria a subscrição de evento deve ter acesso de escrita ao hub de eventos.

Enviar um evento para o tópico personalizado

Vamos acionar um evento para ver como o Event Grid distribui a mensagem para o ponto final. Em primeiro lugar, vamos obter o URL e a chave do tópico personalizado.

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)

Para simplificar este artigo, vai utilizar dados do evento de exemplo para enviar para o tópico personalizado. Normalmente, uma aplicação ou serviço do Azure enviaria os dados do evento. CURL é um utilitário que envia os pedidos HTTP. Neste artigo, utilize o CURL para enviar o evento para o tópico personalizado. O exemplo a seguir envia três eventos para o tópico Event Grid:

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

Na página Visão geral do namespace Hubs de Eventos no portal do Azure, observe que a Grade de Eventos enviou esses três eventos para o hub de eventos. Você verá o mesmo gráfico na página Visão geral da página de instância dos demohub Hubs de Eventos.

Image showing the portal page with incoming message count as 3.

Normalmente, cria uma aplicação que obtém os eventos do hub de eventos. Para criar uma aplicação que obtém mensagens de um hub de eventos, veja:

Clean up resources (Limpar recursos)

Se quiser continuar a trabalhar com este evento, não limpe os recursos criados neste artigo. Caso contrário, utilize o comando seguinte para eliminar os recursos que criou neste artigo.

az group delete --name gridResourceGroup

Próximos passos

Agora que sabe como criar tópicos e subscrições de eventos, saiba mais sobre o que o Event Grid pode ajudá-lo a fazer:

Consulte os exemplos a seguir para saber mais sobre como publicar e consumir eventos da Grade de Eventos usando diferentes linguagens de programação.