Cuadrícula de Eventos de Azure: CloudEvents, filtros, reintentos y eventos personalizados de IA
Volver a la ruta AI-200
AI-200Capítulo 19

Preparación para la Certificación Microsoft AI-200

Cuadrícula de Eventos de Azure: CloudEvents, filtros, reintentos y eventos personalizados de IA

Sustituye el sondeo por flujos de IA controlados por eventos que enrutan CloudEvents del sistema y personalizados mediante suscripciones filtradas, entrega push confiable o pull controlada, reintentos, recuperación de mensajes fallidos, supervisión y publicación segura.

Tiempo de estudio sugerido: 125 minutos • Nivel intermedio • Reescritura original completa con versión resumida de cada tema, evaluación comentada y laboratorio guiado en Python

Escudo neón Microsoft Certified AI-200 para temas de Cuadrícula de Eventos de Azure, CloudEvents, filtros, reintentos y controladores de IA

1. Escenario de IA controlado por eventos y objetivos

Una plataforma de moderación recibe imágenes y texto en , crea embeddings, ejecuta clasificadores y envía resultados riesgosos a revisores. Consultar continuamente cada origen y etapa desperdicia solicitudes, retrasa la reacción, acopla servicios y empeora durante los picos. El flujo necesita una señal ligera cuando llegan datos, termina una inferencia, cambia un modelo o una etapa entrega trabajo a la siguiente.

de ( ) proporciona esa capa de enrutamiento. El capítulo cubre modelado, temas, modos de entrega, filtros, errores transitorios, mensajes fallidos, observabilidad y publicación mediante o .

  • Identificar eventos, orígenes, temas, suscripciones y controladores en un flujo de IA.
  • Elegir temas del sistema, personalizados o de y entrega push o pull.
  • Crear interoperables con tipos, asuntos y datos compactos.
  • Configurar filtros, reintentos, mensajes fallidos, lotes y supervisión.
  • Publicar con , , Python o .

Resumen del tema

sustituye el sondeo por notificaciones explícitas y enrutables para que cada etapa de IA reaccione de manera independiente.

2. Comprende el modelo de enrutamiento

es un servicio administrado de publicación y suscripción de baja latencia, con operaciones cobradas según el uso. Un evento es un hecho compacto sobre un cambio, no el recurso completo. Un origen publica en un tema, la suscripción selecciona coincidencias y el controlador reacciona. , , , , aplicaciones personalizadas y socios pueden ser orígenes.

Componentes principales
ComponenteResponsabilidad en IA
EventoDescribe un cambio discreto con identidad, tipo, origen, hora, asunto y datos pequeños
OrigenProduce el cambio, como una carga, inferencia finalizada o validación de modelo
TemaDelimita la publicación y el enrutamiento de eventos relacionados
Suscripción de eventosConecta un tema con un destino y puede aplicar filtros
ControladorInicia procesamiento, notificación, auditoría u orquestación
Cuadrícula de Eventos de Azure enruta eventos de IA por un tema y suscripciones filtradas
Diagrama original: una publicación se evalúa en suscripciones independientes y solo llega a los controladores cuyos filtros coinciden.

Resumen del tema

Separa el hecho, su productor, el tema, cada filtro y cada reacción para reducir el acoplamiento.

3. Elige temas del sistema, personalizados o de

Selección de tema
TipoPublicador y uso
Tema del sistemaRepresenta eventos de un recurso de , como Microsoft..BlobCreated; la aplicación se suscribe, pero no publica mediante clave de
Tema personalizadoExpone un para eventos de aplicación como InferenceCompleted o ModelRetrained y admite entrega push
Tema de Usa dentro de un y admite push o pull, además de capacidades como integración MQTT

Usa eventos del sistema para el estado de la plataforma, personalizados para hitos de aplicación y temas de cuando el consumidor necesite controlar el pull, usar privado o unificar recursos. La moderación puede comenzar con BlobCreated y después publicar com.contoso.ai.ContentClassified.

Resumen del tema

Relaciona el tipo de tema con el publicador y el consumo: recurso de , hito de aplicación o push/pull.

4. Aplica patrones y selecciona controladores

El procesamiento reactivo comienza cuando llegan datos. La coordinación publica solo en límites importantes, como embeddings listos o índice actualizado. Los eventos de ciclo de vida anuncian entrenamiento, validación, promoción e implementación. Así, auditoría, notificación o calidad pueden suscribirse sin cambiar al productor.

Destinos push comunes
ControladorUso adecuado
Reacciones breves y orquestación
de gran volumen y análisis posterior
Cola o tema de Comandos duraderos, nivelación de carga y procesamiento ordenado
Aplicación personalizada con público validado
Cola de Búfer sencillo y duradero de trabajo

Push envía al encontrar coincidencia. Pull, disponible para temas de , deja que el consumidor reciba a su ritmo y confirme, libere, rechace o renueve el bloqueo. Elige pull si no se puede exponer , se necesita conectividad privada o debe controlarse la tasa.

Temas del sistema, personalizados y de espacio de nombres con entrega push y pull
Diagrama original: los temas del sistema y personalizados activan destinos push; un tema de también permite pull y liquidación controlada.

Resumen del tema

Publica transiciones significativas, usa push para reacción inmediata y pull de para controlar tiempo, tasa o red.

5. Estandariza con 1.0

admite su esquema original y 1.0. se recomienda para nuevos diseños porque estandariza contexto, funciona entre productos y protocolos y permite extensiones. El esquema sigue disponible por compatibilidad. Una entrada puede salir como , pero una entrada no puede convertirse a salida porque el formato anterior no representa extensiones.

Compatibilidad de esquemas
EntradaSalidaCompatibilidad
Esquema Esquema Sí
Esquema 1.0Sí
1.0 1.0Sí
1.0Esquema No

Resumen del tema

Adopta 1.0 de extremo a extremo y comprueba la compatibilidad antes de crear temas y suscripciones.

6. Diseña útiles para operaciones de IA

CloudEvent requiere specversion, type, source e id. El tipo con inverso nombra el hecho, source identifica al productor e id distingue la ocurrencia. Subject, time, datacontenttype y data aportan enrutamiento y contexto. Subject funciona como ruta jerárquica, por ejemplo //moderation/image-classifier.

{
  "specversion": "1.0",
  "type": "com.contoso.ai.InferenceCompleted",
  "source": "/services/content-moderation",
  "id": "evt-7e18",
  "subject": "/pipelines/moderation/image-classifier",
  "time": "2026-08-24T14:30:00Z",
  "datacontenttype": "application/json",
  "data": {
    "requestId": "req-78901",
    "modelName": "content-classifier",
    "modelVersion": "3.2.1",
    "processingDurationMs": 1250,
    "resultLocation": "https://results.example/output/req-78901.json",
    "status": "completed",
    "summary": { "flagged": true, "confidence": 0.97 }
  }
}

Mantén data compacto: identificadores de correlación, modelo y versión, duración, estado, resumen y segura del resultado. Son útiles InferenceCompleted, EmbeddingsRefreshed, BatchProcessingStarted, AnomalyDetected, ModelRetrained y ContentClassified. Publica hechos que otro componente pueda usar, no cada cambio interno.

Resumen del tema

Crea eventos pequeños y autodescriptivos para hechos significativos y referencia los resultados grandes.

7. Filtra por tipo de evento y asunto

Una suscripción puede limitar included event types a hechos comprendidos por el destino. Los prefijos y sufijos de subject enrutan rutas, familias de archivos, o etapas sin abrir data. Al combinarse, tipo y asunto deben coincidir.

az eventgrid event-subscription create \
  --name flagged-content \
  --source-resource-id <topic-resource-id> \
  --endpoint <handler-endpoint> \
  --included-event-types com.contoso.ai.ContentClassified \
  --subject-begins-with /pipelines/moderation/ \
  --advanced-filter data.status StringIn flagged review

La nomenclatura es infraestructura operativa. Define convenciones antes de multiplicar productores, respeta mayúsculas y minúsculas y prueba casos positivos y negativos. Type indica qué ocurrió; subject señala dónde o a qué objeto.

Resumen del tema

Usa type para semántica y prefijo o sufijo de subject para rutas, reduciendo trabajo innecesario.

8. Enruta datos con filtros avanzados

Los filtros avanzados examinan contexto o campos de data. Incluyen StringIn, StringContains, StringBeginsWith, NumberGreaterThan, BoolEquals e IsNotNull. Una suscripción puede usar StringIn en data.status para flagged o review; otra puede seleccionar confianza mínima o versión del modelo.

Se admiten hasta 25 filtros avanzados y 25 valores totales, con 512 caracteres por cadena. Las cláusulas se combinan con AND y los valores dentro de una condición son alternativas. Las claves con punto no pueden escaparse. Los filtros enrutan, pero no autorizan; el controlador todavía valida evento y permisos.

Resumen del tema

Los filtros avanzados eliminan procesamiento inútil, pero exigen contrato estable, límites y validación en el destino.

9. Confirma correctamente la entrega push

En push, envía . Solo 200, 201, 202, 203 y 204 confirman éxito. El dispone de 30 segundos; agotar el tiempo es un error. La carga es una matriz con un evento de forma predeterminada. La entrega es al menos una vez, por lo que el controlador debe hacer idempotentes los efectos mediante id de evento o clave de negocio.

Comportamiento de respuestas
RespuestaAcción
200-204Entrega completada
400, 403 o 413Error permanente; no reintentar
401 o 404 en de recurso de Reintentar después de al menos cinco minutos
408Reintentar después de al menos dos minutos
503Reintentar después de al menos 30 segundos
Otro errorAplicar retroceso exponencial estándar

Devuelve 503 para falta temporal de capacidad, no 400. Un 401 de no se reintenta; el reintento diferido especial de 401 y 404 se aplica a de recursos de . Si la inferencia tarda más de 30 segundos, persiste el trabajo, devuelve 202 y termínalo de manera asíncrona.

Resumen del tema

Responde pronto con el 2xx correcto, clasifica errores transitorios y garantiza idempotencia.

10. Configura duración y límite de intentos

Los reintentos usan retroceso exponencial aleatorizado. La secuencia nominal es 10 segundos, 30 segundos, 1 minuto, 5 minutos, 10 minutos, 30 minutos, 1 hora, 3 horas, 6 horas y después cada 12 horas durante la ventana de 24 horas. La suscripción configura entre 1 y 30 intentos y un entre 1 y 1.440 minutos; los valores predeterminados son 30 y 1.440. El primer límite alcanzado detiene la entrega, y la programación no es configurable.

Un corto puede expirar antes de que importe un número alto de intentos. Decide ambos por valor de negocio, recuperación y capacidad. Pueden omitirse intentos si el parece inactivo. Si después responde en tres minutos, la eliminación de mejor esfuerzo puede competir con otro intento y producir un duplicado.

az eventgrid event-subscription create \
  --name moderation-subscription \
  --source-resource-id <topic-resource-id> \
  --endpoint <handler-endpoint> \
  --max-delivery-attempts 5 \
  --event-ttl 30 \
  --deadletter-endpoint <blob-container-resource-id> \
  --max-events-per-batch 100 \
  --preferred-batch-size-in-kilobytes 512

Resumen del tema

Ajusta e intentos juntos; gana el primero que expire y la idempotencia sigue siendo necesaria.

11. Conserva eventos no entregados como mensajes fallidos

El almacenamiento de mensajes fallidos permanece deshabilitado hasta que la suscripción apunte a un contenedor existente de . Al agotarse intentos o , puede guardar el evento y propiedades como deadLetterReason (MaxDeliveryAttemptsExceeded o MaxRetryDurationExceeded), deliveryAttempts, lastDeliveryOutcome (NotFound, TimedOut, Busy o Forbidden), publishTime y lastDeliveryAttemptTime. Sin destino, el evento se descarta.

Trata el contenedor como una cola operativa: protégelo, define retención, alerta, investiga NotFound o TimedOut, corrige la causa y vuelve a publicar de forma idempotente. Otra suscripción sobre el contenedor puede iniciar notificación o reproceso.

Entrega confiable con confirmación, reintento, mensajes fallidos en Blob, supervisión y repetición controlada
Diagrama original: los éxitos se confirman, los errores transitorios se reintentan y los eventos agotados pasan a Blob protegido para investigación.

Resumen del tema

Los mensajes fallidos aportan evidencia recuperable solo si hay propietario, alerta, diagnóstico, retención y reproceso controlado.

12. Agrupa salidas sin romper la confiabilidad

Los lotes están desactivados de forma predeterminada. La suscripción acepta de 1 a 5.000 eventos y tamaño preferido de 1 a 1.024 KB. Son objetivos de mejor esfuerzo: el servicio no espera a llenar el lote y un evento grande puede superar el tamaño preferido.

La semántica es todo o nada. El procesa el lote entero y responde una vez en 30 segundos; no existe éxito parcial y cualquier error reintenta el lote. Elige un tamaño seguro y conserva idempotencia por evento.

Resumen del tema

Los lotes reducen , pero requieren procesar todo dentro del plazo y tolerar la reentrega completa.

13. Supervisa el flujo y los resultados

expone entregas correctas, intentos fallidos, eventos coincidentes, descartados y enviados a mensajes fallidos. Relaciónalos con latencia, disponibilidad y registros del controlador, capacidad del modelo y tasa de publicación. El error contabiliza intentos, no solo pérdidas definitivas.

Alerta por crecimiento de mensajes fallidos, errores sostenidos, descartes inesperados, ausencia de coincidencias o menor tasa de éxito. Registra id, type, subject, correlación, suscripción, controlador y resultado sin secretos ni datos confidenciales.

Resumen del tema

Observa publicación, coincidencias, intentos, éxito, descarte y mensajes fallidos como un único flujo.

14. Autentica publicadores con privilegio mínimo

Los publicadores pueden usar clave, SAS o . En producción hospedada en , prefiere y asigna Data Sender en el ámbito mínimo del tema. El rol concede Microsoft.EventGrid/events/send/action sin secreto insertado.

La clave usa aeg-sas-key y es cómoda para laboratorios. SAS reduce tiempo y recurso, pero sigue siendo secreto. usa , puede aplicar directivas de y evita rotación por la aplicación. La identidad de entrada es distinta de la identidad que usa para entregar a servicios posteriores.

Resumen del tema

Combina y Data Sender en producción; limita y rota claves o SAS cuando sean imprescindibles.

15. Publica con el de Python

El paquete -eventgrid ofrece EventGridPublisherClient y .core.messaging ofrece CloudEvent. El cliente admite AzureKeyCredential, AzureSasCredential o credenciales de como DefaultAzureCredential, y envía un evento o una lista homogénea. Para temas de , proporciona el contexto requerido por la actual.

import os
from azure.core.messaging import CloudEvent
from azure.eventgrid import EventGridPublisherClient
from azure.identity import DefaultAzureCredential

client = EventGridPublisherClient(
    os.environ["EVENTGRID_TOPIC_ENDPOINT"],
    DefaultAzureCredential(),
)

event = CloudEvent(
    type="com.contoso.ai.InferenceCompleted",
    source="/services/content-moderation",
    subject="/pipelines/moderation/image-classifier",
    data={
        "requestId": "req-78901",
        "modelName": "content-classifier",
        "status": "completed",
        "resultLocation": "https://results.example/output/req-78901.json",
    },
)

client.send(event)  # A list publishes a batch of one event type.

Reutiliza el cliente, valida datos, propaga correlación y publica en puntos naturales: inferencia terminada, promoción, anomalía o transición. Un envío correcto significa aceptación para enrutamiento, no que todos los destinos hayan terminado.

Resumen del tema

El gestiona serialización y autenticación; la aplicación conserva contratos, hitos y la diferencia entre aceptación y procesamiento.

16. Publica por y reutiliza patrones

Un tema personalizado también recibe . Para CloudEvent estructurado, usa application/+ y autentica mediante de , aeg-sas-key o SAS. La respuesta 200 confirma aceptación; incorrecto, credencial no válida o esquema incompatible produce otro estado.

curl -X POST "$EVENTGRID_TOPIC_ENDPOINT" \
  -H "Content-Type: application/cloudevents+json; charset=utf-8" \
  -H "aeg-sas-key: $EVENTGRID_TOPIC_KEY" \
  --data-binary @inference-completed.json
Patrones reutilizables
PatrónDatos útiles
Inferencia completadaIdentificadores, modelo y versión, duración, estado, y resumen
Modelo actualizadoVersión, métricas, del artefacto, promoción y destino
Transición de canalizaciónRun ID, etapa, estado, referencias de entrada y salida, duración y siguiente etapa

Resumen del tema

es portátil, pero debe aplicar los mismos contratos versionados y reglas de seguridad que el .

17. Laboratorio guiado: enruta eventos de moderación

El ejercicio crea y tema, suscripciones para contenido marcado, aprobado y todos los eventos, y una aplicación Flask que publica moderación. El consumidor pull recibe y confirma, libera o rechaza. Reserva unos 30 minutos con suscripción de , , Python 3.12 o posterior y la CLI de actual.

az group create --name ai200-eventgrid-rg --location eastus
az eventgrid namespace create \
  --resource-group ai200-eventgrid-rg \
  --name <globally-unique-namespace> \
  --location eastus
az eventgrid namespace topic create \
  --resource-group ai200-eventgrid-rg \
  --namespace-name <namespace> \
  --name moderation-events \
  --event-retention-in-days 1

python -m venv .venv
python -m pip install --upgrade azure-identity azure-eventgrid flask
  1. Descarga el proyecto inicial, crea el tema de con y tres suscripciones con filtros probados.
  2. Publica eventos approved y flagged con type, subject, ID, modelo, estado y referencia.
  3. Recibe por pull, inspecciona propiedades, confirma éxito, libera errores transitorios y rechaza entradas no válidas.
  4. Demuestra que cada suscripción recibe lo previsto y correlaciona los registros.
  5. Provoca un error controlado, observa reintento o mensaje fallido y elimina el grupo de recursos.

Resumen del tema

El laboratorio valida publicación, enrutamiento filtrado, liquidación pull y observabilidad con eventos reales.

18. Evaluación comentada y lista de producción

Respuestas de la evaluación
PreguntaRespuestaMotivo
Publicar una inferencia finalizada definida por la aplicaciónTema personalizadoLa aplicación posee el evento y publica en
Filtrar una ruta por prefijo o sufijo subjectEl asunto representa la ruta jerárquica
El inicio en frío supera 30 segundosReintento automático con retroceso exponencialEl se intenta de nuevo dentro de la directiva
Enrutar flagged o review en data.statusFiltro avanzado StringInEvalúa alternativas en el campo
publicando en producción con Evita claves y aplica mínimo

Antes de producción, confirma tipo de tema, contrato y versión , taxonomía de type y subject, pruebas de filtros, push o pull, validación del , comportamiento en 30 segundos, idempotencia, e intentos, responsable de mensajes fallidos, límites de lote, métricas y alertas, procedimiento de reproceso, identidad y , red privada, cuotas, costo y pruebas de carga.

  1. Microsoft Learn: introducción a de
  2. Microsoft Learn: conceptos de entrega push
  3. Microsoft Learn: conceptos de y pull
  4. Microsoft Learn: 1.0
  5. Microsoft Learn: filtrado de eventos
  6. Microsoft Learn: entrega, reintentos y lotes
  7. Microsoft Learn: mensajes fallidos y reintentos
  8. Microsoft Learn: autenticar publicadores con
  9. Microsoft Learn: EventGridPublisherClient para Python

Resumen del tema

Una solución de producción combina contrato interoperable, enrutamiento preciso, entrega segura, recuperación observable y publicación basada en identidad.