Compartir a través de


Inicio rápido: Publicación en temas de espacio de nombres y consumo de eventos en Azure Event Grid

En este inicio rápido, extraerá la entrega mediante el comando de curl shell de Bash para publicar, recibir y confirmar eventos. Use comandos de la CLI de Azure para crear recursos de Azure Event Grid. Este artículo es adecuado para una prueba rápida de la funcionalidad de entrega de extracción.

Para obtener código de ejemplo que usa los SDK del plano de datos, consulte estos recursos:

Para más información sobre el modelo de entrega de extracción, consulte los Conceptos del espacio de nombres de Azure Event Grid y la Entrega de extracción con HTTP.

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

Prerrequisitos

  • En este artículo se necesita la versión 2.0.70 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, la versión más reciente ya está instalada.

Creación de un grupo de recursos

Cree un grupo de recursos de Azure con el comando az group create. Use este grupo de recursos para contener todos los recursos que cree en este artículo.

Los pasos generales para usar Cloud Shell para ejecutar comandos son:

  • Seleccione Abrir Cloud Shell para ver una ventana de Azure Cloud Shell en el panel derecho.
  • Copie el comando y péguelo en la ventana de Azure Cloud Shell.
  • Presione ENTRAR para ejecutar el comando.
  1. Declare una variable para contener el nombre de un grupo de recursos de Azure. Especifique un nombre para el grupo de recursos reemplazando <your-resource-group-name> por el valor.

    resource_group="<your-resource-group-name>"
    
  2. Cree un grupo de recursos. Puede cambiar la ubicación a cualquier ubicación de Azure.

    az group create --name $resource_group --location eastus
    

Habilitar el 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 unos instantes en finalizar. Para comprobar el estado, ejecute el comando siguiente:

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

    Cuando registrationState sea Registered, estará preparado para continuar.

Creación de un espacio de nombres

Un espacio de nombres de Event Grid proporciona un punto de conexión definido por el usuario al que envía sus eventos. En el ejemplo siguiente se crea en un grupo de recursos el espacio de nombres mediante Bash en Azure Cloud Shell. El nombre del espacio de nombres debe ser único porque forma parte de una entrada del sistema de nombres de dominio (DNS). Un nombre de espacio de nombres debe cumplir las reglas siguientes:

  • Debe tener entre 3 y 50 caracteres.
  • Debe ser regionalmente único.
  • Solo los caracteres permitidos son: a-z, A-Z, 0-9 y -
  • No debe empezar con prefijos de palabra clave reservados como Microsoft, Systemo EventGrid.
  1. Declara una variable para almacenar el nombre de tu espacio de nombres de Event Grid. Especifique un nombre para el espacio de nombres reemplazando <your-namespace-name> por el valor.

    namespace="<your-namespace-name>"
    
  2. Cree un espacio de nombres. Es posible que quiera cambiar la ubicación en la que la implemente.

    az eventgrid namespace create --resource-group $resource_group --name $namespace --location eastus
    

Creación de un tema de espacio de nombres

Cree un tema que contenga todos los eventos publicados en el punto de conexión del espacio de nombres.

  1. Declara una variable para almacenar el nombre del tema en el namespace. Especifique un nombre para el tema de espacio de nombres reemplazando <your-topic-name> por su valor.

    topic="<your-topic-name>"
    
  2. Cree el tema del espacio de nombres:

    az eventgrid namespace topic create --resource-group $resource_group --name $topic --namespace-name $namespace
    

Creación de una suscripción a evento

Cree una suscripción de eventos que establezca su modo de entrega en cola, que admite la entrega de extracción. Para más información sobre todas las opciones de configuración, consulte API REST de Azure Event Grid.

  1. Declare una variable para contener el nombre de una suscripción de eventos al tema del espacio de nombres. Especifique un nombre para la suscripción de eventos reemplazando <your-event-subscription-name> por su valor.

    event_subscription="<your-event-subscription-name>"
    
  2. Cree una suscripción de eventos al tema del espacio de nombres:

    az eventgrid namespace topic event-subscription create --resource-group $resource_group --topic-name $topic --name $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
    

Envía eventos a tu tema

Envíe un evento de ejemplo al tema de espacio de nombres siguiendo los pasos de esta sección.

Enumeración de las claves de acceso del espacio de nombres

  1. Obtenga las claves de acceso asociadas al espacio de nombres que creó. Necesita una de ellas para autenticarse al publicar eventos. Para enumerar las claves, obtenga el identificador de recurso de espacio de nombres completo. Ejecute el siguiente comando:

    namespace_resource_id=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "id" --output tsv)
    
  2. Obtenga la primera clave del espacio de nombres:

    key=$(az eventgrid namespace list-key --resource-group $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Publicación de un evento

  1. Recupere el nombre de host del espacio de nombres. Se usa para crear el punto de conexión HTTP del espacio de nombres al que se envían los eventos. Las siguientes operaciones estaban disponibles primero con la versión 2023-06-01-previewde API .

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. Cree un evento compatible con CloudEvents de ejemplo:

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    El elemento data es la carga del evento. En este campo, puede usar cualquier archivo JSON bien formado. Las propiedades que pueden entrar en un evento también se conocen como atributos de contexto. Para obtener más información, consulte CloudEvents.

  3. Use CURL para enviar el evento al tema. CURL es una utilidad que envía solicitudes HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

Recepción del evento

Recibe eventos de Event Grid mediante un punto de conexión que hace referencia a una suscripción de eventos.

  1. Cree el punto de conexión mediante la ejecución del comando siguiente:

    receive_operation_uri="https://"$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
    
  2. Envíe una solicitud para consumir el evento:

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
    

Confirmación de un evento

Después de recibir un evento, pasará ese evento a la aplicación para su procesamiento. Después de procesar correctamente el evento, ya no necesitará que ese evento forme parte de su suscripción de eventos. Para indicar a Event Grid que elimine el evento, lo tiene que confirmar mediante su token de bloqueo que obtuvo en la respuesta de la operación de recepción.

  1. En la sección anterior, recibió una respuesta que incluye un objeto brokerProperties con una propiedad lockToken. Copie el valor del token de bloqueo y establézcalo en una variable de entorno:

    lockToken="<paste-the-lock-token-here>"
    
  2. Compile la carga de la operación de confirmación, que especifica el token de bloqueo para el evento que desea confirmar.

    acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
    
  3. Continúe con la compilación de la cadena con el URI de la operación de confirmación:

    acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-preview
    
  4. Por último, envíe una solicitud para confirmar el evento recibido:

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
    

    Si la operación de confirmación se ejecuta antes de que expire el token de bloqueo (300 segundos como se establece al crear la suscripción de eventos), debería ver una respuesta como en el ejemplo siguiente:

    {"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
    

Paso siguiente

Para obtener más información sobre el modelo de entrega de extracción, consulte Entrega de extracción con HTTP.