Inicio rápido: Enrutamiento de eventos personalizados a un centro de eventos mediante Event Grid y la CLI de Azure
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 y Azure Event Hubs es uno de ellos.
En este inicio rápido, se usa la CLI de Azure para crear un tema personalizado de Event Grid y una suscripción de Event Hubs para ese tema. Después, se envían eventos de ejemplo al tema personalizado y se comprueba que esos eventos se entregan a un centro de eventos.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Crear un grupo de recursos
Los temas de Event Grid son recursos de Azure y se deben colocar en un grupo de recursos de Azure. El grupo de recursos de Azure 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, después, presione la tecla Entrar para ejecutar el comando.
az group create --name gridResourceGroup --location westus2
Habilitar el proveedor de recursos de Event Grid
Si aún no ha usado anteriormente Event Grid en su suscripción de Azure, puede 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
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
seaRegistered
, estará preparado 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 registran 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) lo representa.
Especifique un nombre para el tema:
topicname="<TOPIC NAME>"
Para crear el tema, ejecute el siguiente comando:
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Creación de un centro de eventos
Antes de suscribirse al tema personalizado, cree el punto de conexión para el mensaje de evento. Cree un centro de eventos para recopilar los eventos.
Especifique un nombre único para el espacio de nombres de Event Hubs:
namespace="<EVENT HUBS NAMESPACE NAME>"
Ejecute los siguientes comandos para crear un espacio de nombres de Event Hubs y un centro de eventos denominado
demohub
en ese espacio de nombres:hubname=demohub az eventhubs namespace create --name $namespace --resource-group gridResourceGroup az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
Suscripción a un tema personalizado
Suscríbase a un tema de Event Grid para indicar a Event Grid los eventos cuyo seguimiento quiere realizar. El siguiente ejemplo se suscribe al tema personalizado que ha creado y pasa el id. de recurso del centro de eventos para el punto de conexión. El punto de conexión tiene este formato:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>
El siguiente script obtiene el identificador del recurso del centro de eventos y se suscribe a un tema de Event Grid. Establece el tipo de punto de conexión en eventhub
y utiliza el identificador del centro de eventos para el punto de conexión.
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
La cuenta que crea la suscripción de eventos debe tener acceso de escritura al centro de eventos.
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 -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
Por motivos de simplicidad en este artículo, se usan datos de eventos de ejemplo para enviarlos al tema personalizado. Normalmente, una aplicación o servicio de Azure enviaría los datos del evento.
La herramienta cURL envía solicitudes HTTP. En este artículo, se usa 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
En Azure Portal, en la página Información general del espacio de nombres de Event Hubs, observe que Event Grid ha enviado esos tres eventos al centro de eventos. Verá el mismo gráfico en la página Información general de la instancia demohub
de Event Hubs.
Normalmente, se crea una aplicación que recupera mensajes de eventos del centro de eventos. Para más información, vea:
- Introducción a la recepción de mensajes con el host del procesador de eventos en .NET Standard
- Recepción de eventos desde Azure Event Hubs mediante Java
- Recepción de eventos desde Event Hubs mediante Apache Storm
Limpieza de recursos
Si piensa seguir trabajando con este evento, no limpie los recursos que ha creado en este artículo. De lo contrario, use el siguiente comando para eliminar los recursos:
az group delete --name gridResourceGroup
Contenido relacionado
Ahora que sabe cómo crear suscripciones a temas y eventos, aprenda más sobre cómo Event Grid puede ayudarle:
- Una introducción a Azure Event Grid
- Enrutamiento de eventos de Azure Blob Storage a un punto de conexión web personalizado
- Supervisión de los cambios en máquinas virtuales con Azure Event Grid y Logic Apps
- Transmisión de macrodatos a un almacén de datos
Para aprender a publicar y consumir eventos en Event Grid mediante varios lenguajes de programación, vea los siguientes ejemplos: