Partilhar via


Guia de início rápido: rotear eventos personalizados para uma fila 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 o armazenamento de filas do Azure é um deles.

Neste início rápido, você usa a CLI do Azure para criar um tópico personalizado de Grade de Eventos e uma assinatura de Armazenamento de Fila 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 uma fila.

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 uma fila

Antes de se inscrever no tópico personalizado, crie o ponto de extremidade para a mensagem do evento. Você cria uma fila para coletar os eventos.

  1. Especifique um nome exclusivo para a conta de armazenamento do Azure:

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Execute os seguintes comandos para criar uma conta de armazenamento e uma fila (chamada eventqueue) no armazenamento:

    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
    

Subscrever um tópico personalizado

O exemplo a seguir se inscreve no tópico personalizado que você criou e passa a ID do recurso da fila para o ponto de extremidade. Com a CLI do Azure, você passa a ID da fila como o ponto de extremidade. O ponto de extremidade está neste formato:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

O script seguinte obtém o ID do recurso da conta de armazenamento para a fila. Ele constrói a ID da fila e se inscreve em um tópico da Grade de Eventos. Define o tipo de ponto final storagequeue e utiliza o ID de fila para o ponto final.

Antes de executar o comando, substitua o espaço reservado para a data de expiração (<yyyy-mm-dd>) por um valor real para o ano, mês e dia.

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>"

A conta que cria a assinatura do evento deve ter acesso de gravação à fila. Observe que está definida uma data de expiração para a subscrição.

Se você usar a API REST para criar a assinatura, passará a ID da conta de armazenamento e o nome da fila como um parâmetro separado:

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

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

Vá para a fila no portal do Azure e observe que a Grade de Eventos enviou esses três eventos para a fila.

Captura de tela que mostra uma lista de mensagens recebidas da Grade de Eventos em uma fila.

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: