Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Event Grid te permite enrutar tus mensajes MQTT a servicios de Azure o webhooks para su procesamiento posterior. Al enrutar estos datos, puedes construir soluciones de extremo a extremo que utilicen tus datos IoT para análisis, almacenamiento y visualización.
Este artículo explica cuándo usar el enrutamiento y te muestra cómo configurar el enrutamiento tanto a un tema de espacio de nombres de la Grid de Eventos como a un tema personalizado.
Cuándo usar el enrutamiento
Enrutar los mensajes de tus clientes a un servicio de Azure o a tu endpoint personalizado te ayuda a maximizar los beneficios de estos datos. La siguiente lista describe algunos de los muchos casos de uso de esta función:
- Análisis de datos: Extrae y analiza los mensajes enrutados de tus clientes para optimizar tu solución. Por ejemplo, analiza la telemetría de tus máquinas para predecir cuándo programar el mantenimiento antes de que ocurran fallos, para evitar retrasos y daños adicionales.
- Aplicaciones sin servidor: Activa una función serverless basada en los mensajes enrutados de tus clientes. Por ejemplo, cuando un sensor de movimiento detecta movimiento, envía una notificación al personal de seguridad para que lo solucione.
- Visualizaciones de datos: Crea visualizaciones de los datos enrutados de tus clientes para representar y entender los datos, y para destacar tendencias y valores atípicos.
Configuración del enrutamiento
La configuración de enrutamiento te permite enviar todos tus mensajes MQTT desde tus clientes a un tema de espacio de nombres de Grid de Eventos o a un tema personalizado de Grid de Eventos. Una vez que los mensajes están en el tema, puede configurar una suscripción de eventos para consumir los mensajes del tema. Use los siguientes pasos generales para lograr esta configuración:
- Tema de espacio de nombres como destino de enrutamiento:
- Cree un tema del espacio de nombres de Event Grid en el que Event Grid enruta todos los mensajes MQTT.
- Crea una suscripción de evento tipo push para enrutar estos mensajes a uno de los servicios de Azure compatibles o a un webhook personalizado, o crea una suscripción de evento tipo cola para extraer los mensajes directamente del tema del espacio de nombres a través de tu aplicación.
- Establece la configuración de enrutamiento que se refiere al tema que creaste en el primer paso.
- Tema personalizado como destino de enrutamiento:
- Crea un tema personalizado de la Cuadrícula de Eventos donde la Cuadrícula de Eventos enrute todos los mensajes MQTT. Este tema debe cumplir con los requisitos de temas personalizados de la Grid de Eventos para el enrutamiento.
- Cree una suscripción de eventos de Event Grid para enrutar estos mensajes a uno de los servicios de Azure compatibles o a un punto de conexión personalizado.
- Establece la configuración de enrutamiento que se refiere al tema que creaste en el primer paso.
Nota:
Desactivar el acceso público a la red en el espacio de nombres provoca que el enrutamiento MQTT falle.
Diferencia entre los temas de espacio de nombres y los temas personalizados como destino de enrutamiento
En la tabla siguiente se muestra la diferencia entre los temas de espacio de nombres y los temas personalizados como destino de enrutamiento. Para un desglose detallado de qué cuotas y límites incluye cada recurso de la Cuadrícula de Eventos, véase Cuotas y límites.
| Punto de comparación | Tema de espacio de nombres | Tema personalizado |
|---|---|---|
| Capacidad de procesamiento | Alto, hasta 40 MB/s (entrada) y 80 MB/s (salida) | Bajo, hasta 5 MB/s (entrada y salida) |
| Entrega de extracción | Sí | No |
| Entrega de inserción a Event Hubs | Sí | Sí |
| Entrega de inserción a servicios de Azure (Functions, Webhooks, colas y temas de Service Bus, retransmisión de conexiones híbridas y colas de almacenamiento) | No | Sí |
| Retención de mensajes | 7 días | 1 día |
| Requisito de asignación de roles | No es necesario porque el broker MQTT y el tema del espacio de nombres están bajo el mismo espacio de nombres | Es necesario porque el espacio de nombres que aloja la funcionalidad del broker MQTT y el tema personalizado son recursos diferentes |
Requisitos de temas personalizados de Event Grid para el enrutamiento
El tema personalizado de Grid de Eventos que utilices para el enrutamiento debe cumplir los siguientes requisitos:
- Necesita usar el esquema CloudEvents v1.0.
- Debe estar en la misma región que el espacio de nombres.
- Debes asignar el rol de Remitente de Datos de la Cuadrícula de Eventos a ti mismo o a la identidad gestionada seleccionada en el tema personalizado de la Cuadrícula de Eventos antes de aplicar la configuración de enrutamiento. Para asignar el rol:
- En el portal, ve al recurso temático de la Cuadrícula de Eventos que has creado.
- En el menú de control de acceso (IAM ), selecciona Añadir asignación de rol.
- En la pestaña de Rol , selecciona Remitente de datos de la cuadrícula de eventos y luego selecciona Siguiente.
- En la pestaña de Miembros, selecciona Seleccionar miembros y luego introduce tu nombre de usuario de Microsoft Entra en la casilla de Seleccionar que aparece (por ejemplo,
user@contoso.com). - Selecciona tu nombre de usuario de Microsoft Entra y luego selecciona Revisar + asignar.
Configuración de Azure Portal
Para configurar el enrutamiento:
- En Azure Portal, vaya a su espacio de nombres.
- En Enrutamiento, selecciona Habilitar enrutamiento.
- Para el tipo de tema, selecciona entre el tema del espacio de nombres o el tema personalizado.
- En Tema, selecciona el tema que creaste al que se enrutan todos los mensajes MQTT.
- Para temas personalizados, la lista muestra solo los temas que cumplen los requisitos de temas personalizados de la Grid de Eventos para el enrutamiento.
- Si seleccionas un tema personalizado, aparece la sección de Identidad Gestionada para Entrega . Seleccione una de las siguientes opciones para la identidad que autentifique al broker MQTT mientras entrega los mensajes MQTT al tema personalizado:
- Ninguno: Asigna el rol de Remitente de Datos de la Cuadrícula de Eventos a ti mismo en el tema personalizado.
- Identidad asignada al sistema: Habilitar la identidad asignada al sistema en el espacio de nombres como requisito previo y asignar el rol de Remitente de Datos de la Cuadrícula de Eventos a la identidad asignada por el sistema en el tema personalizado.
- Identidad asignada por el usuario: Habilitar la identidad asignada por el usuario en el espacio de nombres como requisito previo y asignar el rol de Remitente de Datos de la Cuadrícula de Eventos a la identidad seleccionada en el tema personalizado. Si seleccionas Identidad asignada por el usuario, aparece un desplegable para que puedas seleccionar la identidad.
- Seleccione Aplicar.
Para obtener instrucciones de configuración de enriquecimiento, vaya a Configuración del portal de enriquecimiento.
Configuración de la CLI de Azure
az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json
NS.json
{
"properties": {
"inputSchema": "CloudEventSchemaV1_0",
"topicSpacesConfiguration": {
"state": "Enabled",
"routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
"routingIdentityInfo": {
"type": "UserAssigned",
"userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>"
}
}
}
}
En routingIdentityInfo, type acepta None, SystemAssigned, o UserAssigned. Establece userAssignedIdentity solo cuando type es UserAssigned.
Para obtener instrucciones de configuración de la CLI de enriquecimiento, vaya a Configuración de enriquecimiento.
Comportamiento de enrutamiento de mensajes MQTT
Al enrutar mensajes MQTT a temas personalizados, Event Grid proporciona entrega duradera, ya que intenta entregar cada mensaje al menos una vez inmediatamente. Si se produce un error, Event Grid vuelve a intentar la entrega o descarta el mensaje destinado al enrutamiento. Event Grid no garantiza el pedido de entrega de eventos, por lo que los suscriptores pueden recibirlos fuera de pedido.
En la tabla siguiente se describe el comportamiento del enrutamiento de mensajes MQTT en función de diferentes errores.
| Error | Descripción del error | Comportamiento |
|---|---|---|
| TopicNotFoundError | El tema personalizado configurado para recibir todos los mensajes enrutados por MQTT fue eliminado. | Event Grid elimina el mensaje MQTT destinado al enrutamiento. |
| AuthenticationError | Se eliminó el rol Remitente de datos de EventGrid para el tema personalizado configurado como destino para los mensajes MQTT enrutados. | Event Grid elimina el mensaje MQTT destinado al enrutamiento. |
| Demasiadas Solicitudes | El número de mensajes enrutados MQTT por segundo supera el límite de publicación del tema personalizado. | Event Grid reintenta enrutar el mensaje MQTT. |
| Error de servicio | Error inesperado de un servidor por razones operativas. | Event Grid reintenta enrutar el mensaje MQTT. |
Durante los reintentos, Event Grid usa una directiva de reintentos de retroceso exponencial para el enrutamiento de mensajes MQTT. Event Grid reintenta la entrega en el siguiente horario y cuando sea el mejor momento:
- 10 segundos
- 30 segundos
- 1 minuto
- 5 minutos
- 10 minutos
- 30 minutos
- 1 hora
- 3 horas
- 6 horas
- Cada 12 horas
Si un mensaje MQTT enrutado puesto en cola para su reentrega se entrega correctamente, Event Grid intenta eliminarlo de la cola de reintentos en la medida de lo posible, pero aun así podrías recibir mensajes duplicados.