Partilhar via


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

A Grade de Eventos do Azure é um agente de eventos altamente escalável e sem servidor que você pode usar para integrar aplicativos por meio de 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 início rápido, você usa a CLI do Azure para criar um tópico personalizado da Grade de Eventos e uma assinatura dos Hubs de Eventos para esse tópico. Em seguida, você envia eventos de exemplo para o tópico personalizado e verifica se esses eventos são entregues a um 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 da Grade de Eventos são recursos do Azure e devem ser colocados em um 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.

Selecione Open Cloud Shell para abrir o Azure Cloud Shell no painel direito. Selecione o botão Copiar para copiar o comando, cole-o no Cloud Shell e selecione a tecla 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 uma entrada DNS (Sistema de Nomes de Domínio) o representa.

  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 se inscrever no tópico personalizado, crie o ponto de extremidade para a mensagem do 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 seguintes comandos 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 de extremidade está neste 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

Acione um evento para ver como a Grade de Eventos distribui a mensagem para seu ponto de extremidade. Primeiro, obtenha a URL e a chave para o 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)

Por uma questão de simplicidade neste artigo, você usa dados de evento de exemplo para enviar para o tópico personalizado. Normalmente, um aplicativo ou um serviço do Azure enviaria os dados do evento.

A ferramenta cURL envia solicitações HTTP. Neste artigo, você usa 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

No portal do Azure, na página Visão geral do namespace Hubs de Eventos, 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 instância dos demohub Hubs de Eventos.

Captura de ecrã que mostra a página do portal com uma contagem de mensagens recebidas de 3.

Normalmente, você cria um aplicativo que recupera mensagens de eventos do hub de eventos. Para obter mais informações, consulte:

Clean up resources (Limpar recursos)

Se planeia continuar a trabalhar com este evento, não limpe os recursos que criou neste artigo. Caso contrário, use o seguinte comando para excluir os recursos:

az group delete --name gridResourceGroup

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:

Para saber mais sobre como publicar eventos e consumir eventos da Grade de Eventos usando várias linguagens de programação, consulte os seguintes exemplos: