Compartir a través de


Inicio rápido: enrutamiento de eventos personalizados a una cola mediante Event Grid y la CLI de Azure

En este inicio rápido, usará la CLI de Azure para crear un tema personalizado de Event Grid y una suscripción de Queue Storage para ese tema. A continuación, envíe eventos de ejemplo al tema personalizado y compruebe que esos eventos se entregan a una cola.

Azure Event Grid es un agente de eventos sin servidor altamente escalable que se puede usar para integrar aplicaciones mediante eventos. Event Grid entrega eventos a controladores de eventos admitidos, como Azure Queue Storage. Para obtener más información, consulte Controladores de eventos.

Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.

Creación de un grupo de recursos

Los temas de Event Grid son recursos de Azure. Colóquelos en un grupo de recursos de Azure. El grupo de recursos es una colección lógica en la que se implementan y administran los recursos de Azure.

Cree un grupo de recursos con el comando az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado gridResourceGroup en la ubicación westus2.

Seleccione Abrir Cloud Shell para abrir Azure Cloud Shell en el panel derecho. Seleccione el botón Copiar para copiar el comando, péguelo en Cloud Shell y, a continuación, seleccione la tecla Entrar para ejecutar el comando.

az group create --name gridResourceGroup --location westus2

Habilitación del proveedor de recursos de Event Grid

  1. Si es la primera vez que usa Event Grid en su suscripción de Azure, es posible que tenga que registrar el proveedor de recursos de Event Grid. Ejecute el siguiente comando para registrar el proveedor:

    az provider register --namespace Microsoft.EventGrid
    
  2. El registro puede tardar un momento en finalizar. Para comprobar el estado, ejecute el siguiente comando:

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

    Cuando registrationState es Registered, está listo para continuar.

Creación de un tema personalizado

Un tema de Event Grid proporciona un punto de conexión definido por el usuario en el que se publican los eventos. En el ejemplo siguiente se crea el tema personalizado en el grupo de recursos.

Reemplace <TOPIC NAME> por un nombre único para el tema personalizado. El nombre del tema de Event Grid debe ser único porque una entrada del Sistema de nombres de dominio (DNS) la representa.

  1. Especifique un nombre para el tema:

    topicname="<TOPIC NAME>"
    
  2. Ejecute el siguiente comando para crear el tema:

    az eventgrid topic create --name $topicname --location westus2 --resource-group gridResourceGroup
    

Creación de una cola

Antes de suscribirse al tema personalizado, cree el punto de conexión para el mensaje de evento. Se crea una cola para recopilar los eventos.

  1. Especifique un nombre único para la cuenta de almacenamiento de Azure:

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Ejecute los siguientes comandos para crear una cuenta de almacenamiento y una cola (denominada eventqueue) en el almacenamiento:

    queuename="eventqueue"
    
    az storage account create --name $storagename --resource-group gridResourceGroup --location westus2 --sku Standard_LRS
    key="$(az storage account keys list --account-name $storagename --query "[0].{value:value}" --output tsv)"    
    az storage queue create --name $queuename --account-name $storagename --account-key $key
    

Suscribirse a un tema personalizado

En el ejemplo siguiente se suscribe al tema personalizado que creó. Pasa el identificador de recurso de la cola para el punto de conexión. Con la CLI de Azure, pasará el identificador de cola como punto de conexión. El punto de conexión tiene este formato:

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

El siguiente script obtiene el identificador del recurso de la cuenta de almacenamiento de la cola. Construye el identificador de cola y se suscribe a un tema de Event Grid. Establece el tipo de punto de conexión en storagequeue y usa el identificador de cola para el punto de conexión.

Antes de ejecutar el comando, reemplace el marcador de posición de la fecha de expiración (<yyyy-mm-dd>) por un valor real para el año, mes y día.

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

La cuenta que crea la suscripción de eventos debe tener acceso de escritura a la cola. Se establece una fecha de expiración para la suscripción.

Si usa la API de REST para crear la suscripción, pase el identificador de la cuenta de almacenamiento y el nombre de la cola como parámetro independiente:

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

Envío de un evento al tema personalizado

Desencadene un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión. En primer lugar, obtenga la dirección URL y la clave del tema personalizado:

endpoint=$(az eventgrid topic show --name $topicname --resource-group gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname --resource-group gridResourceGroup --query "key1" --output tsv)

Para simplificar, en este artículo se usan datos de eventos de ejemplo para enviar al tema personalizado. Normalmente, una aplicación o un servicio de Azure enviarían los datos del evento.

La herramienta cURL envía solicitudes HTTP. En este artículo, usará cURL para enviar el evento al tema personalizado. En el ejemplo siguiente se envían tres eventos al tema de 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

Vaya a la cola en Azure Portal para ver que Event Grid envió esos tres eventos a la cola.

Captura de pantalla que muestra una lista de mensajes recibidos de Event Grid en una cola.

Limpieza de recursos

Si tiene previsto seguir trabajando con este evento, no quite los recursos mencionados en este artículo. De lo contrario, use el siguiente comando para eliminar los recursos:

az group delete --name gridResourceGroup

Ahora que sabe cómo crear temas y suscripciones de eventos, obtenga más información sobre lo que Event Grid puede ayudarle a hacer:

Para obtener información sobre cómo publicar eventos y consumir eventos desde, Event Grid mediante varios lenguajes de programación, consulte los ejemplos siguientes: