Información general sobre la característica MQTT broker de Azure Event Grid
Azure Event Grid permite que los clientes MQTT se comuniquen entre sí y con los servicios de Azure para admitir las soluciones del Internet de las cosas (IoT).
La característica de agente MQTT de Event Grid permite los siguientes escenarios:
- Ingerir telemetría mediante un patrón de mensajería de varios a uno. Este patrón permite a la aplicación dejar que Event Grid se ocupe de la pesada tarea de administrar el gran número de conexiones con dispositivos.
- Controlar a los clientes MQTT mediante el patrón de mensajería de solicitud-respuesta (uno a uno). Este patrón permite a cualquier cliente comunicarse con cualquier otro cliente sin restricciones, independientemente de los roles de los clientes.
- Difundir alertas a una flota de clientes mediante el patrón de mensajería de uno a varios. Este patrón permite a la aplicación publicar solo un mensaje que el servicio replica para cada cliente interesado.
- Integrar los datos de los clientes MQTT mediante el enrutamiento de mensajes MQTT a servicios y Webhooks de Azure mediante e la funcionalidad de entrega de inserción HTTP. Esta integración con los servicios de Azure le permite crear canalizaciones de datos que comienzan con la ingesta de datos desde los dispositivos IoT.
Puede encontrar ejemplos de código que muestren estos escenarios en este repositorio.
El agente MQTT es idóneo para la implementación de escenarios de automoción y movilidad, entre otros. Consulte la arquitectura de referencia para obtener información sobre cómo crear soluciones seguras y escalables para conectar millones de vehículos a la nube mediante los servicios de análisis de datos y mensajería de Azure.
Conceptos clave
A continuación se incluye una lista de los conceptos clave de la característica de agente MQTT de Azure Event Grid.
MQTT
MQTT es un protocolo de transporte de mensajería de publicación y suscripción diseñado para entornos restringidos. Es el estándar de comunicación para escenarios de IoT debido a la eficiencia, escalabilidad y confiabilidad. El agente MQTT permite a los clientes publicar mensajes y suscribirse a otros a través de los protocolos MQTT v3.1.1, MQTT v3.1.1 a través de WebSockets, MQTT v5 y MQTT v5 a través de WebSockets. En la lista siguiente se recogen algunos de los aspectos más destacados de la característica de agente MQTT:
Características de MQTT v5:
- Última voluntad y Testamento (LWT) notifica a sus clientes MQTT las desconexiones bruscas de otros clientes MQTT. Puede usar LWT para garantizar un flujo predecible y confiable de comunicación entre los clientes MQTT durante las desconexiones inesperadas.
- Las propiedades de usuario permiten agregar pares clave-valor personalizados en el encabezado del mensaje para proporcionar más contexto sobre el mensaje. Por ejemplo, incluir el propósito o el origen del mensaje para que el receptor pueda controlar el mensaje de forma eficaz.
- El patrón de solicitud-respuesta permite a los clientes aprovechar el patrón asincrónico estándar de solicitud-respuesta, especificando el tema de respuesta y el identificador de correlación en la solicitud para que el cliente responda sin configuración previa.
- El intervalo de expiración del mensaje permite declarar en el agente MQTT cuándo no debe tenerse en cuenta un mensaje porque ya no es oportuno o válido. Por ejemplo, omitir los comandos o las alertas obsoletos.
- Los alias de tema ayudan a los clientes a reducir el tamaño del campo de tema, lo que hace que la transferencia de datos sea menos costosa.
- El tamaño máximo del mensaje permite a los clientes controlar el tamaño máximo del mensaje que pueden controlar desde el servidor.
- El parámetro Receive Maximum permite a los clientes controlar la tasa de mensajes dependiendo de sus funcionalidades, como la velocidad de procesamiento o las funcionalidades de almacenamiento.
- El inicio limpio y la expiración de la sesión permiten a los clientes optimizar la confiabilidad y la seguridad de la sesión conservando la información y los mensajes de la suscripción del cliente durante un intervalo de tiempo configurable.
- Las confirmaciones negativas permiten a los clientes reaccionar eficazmente a diferentes códigos de error.
- Los paquetes de desconexión enviados por el servidor permiten a los clientes controlar de forma eficaz las desconexiones.
Se seguirán agregando más características de MQTT v5 al agente MQTT en el futuro para que esté más en línea con la especificación MQTT. Los siguientes elementos detallan las diferencias actuales entre las características que admite el agente MQTT y la especificación MQTT v5: no se admiten mensajes de última voluntad (Will), la marca Retain, la ordenación de mensajes ni QoS 2.
Características de MQTT v3.1.1:
- Última voluntad y Testamento (LWT) notifica a sus clientes MQTT las desconexiones bruscas de otros clientes MQTT. Puede usar LWT para garantizar un flujo predecible y confiable de comunicación entre los clientes MQTT durante las desconexiones inesperadas.
- Las sesiones persistentes garantizan la confiabilidad conservando la información y los mensajes de la suscripción del cliente cuando se desconecta un cliente.
- QoS 0 y 1 proporcionan a sus clientes control sobre la eficiencia y confiabilidad de la comunicación.
Se seguirán agregando más características de MQTT v3.1.1 al agente MQTT en el futuro para que esté más en línea con la especificación MQTT. Los siguientes elementos detallan las diferencias actuales entre las características compatibles con MQTT broker y la especificación MQTT v3.1.1: No se admiten la marca de retención, el orden de mensajes y QoS 2.
Más información sobre el agente MQTT y sus limitaciones actuales.
Modelo de mensajería de publicación y suscripción
El modelo de mensajería publicación y suscripción proporciona una comunicación escalable y asincrónica a los clientes. Permite a los clientes evitar tener que encargarse de la tarea de controlar un gran número de conexiones y mensajes al servicio. Gracias al modelo de mensajería de publicación y suscripción, los clientes pueden comunicarse de forma eficaz mediante patrones de mensajería de uno a varios, de varios a uno y de uno a uno.
- El patrón de mensajería de uno a varios permite a los clientes publicar solo un mensaje que el servicio replica para cada cliente interesado.
- El patrón de mensajería de varios a uno permite a los clientes no tener que encargarse de la tarea de administrar el gran número de conexiones al agente MQTT.
- El patrón de mensajería de uno a uno permite a cualquier cliente comunicarse con cualquier otro cliente sin restricciones, independientemente de los roles de los clientes.
Espacio de nombres
El espacio de nombres de Event Grid es un contenedor de administración para los recursos que admiten la funcionalidad del agente MQTT, junto con los recursos que admiten la funcionalidad de entrega de extracción. El cliente MQTT puede conectarse al agente MQTT y publicar mensajes y suscribirse a otros, mientras que el agente MQTT autentica a los clientes, autoriza las solicitudes de publicación o suscripción y reenvía mensajes a los clientes interesados. Obtenga más información sobre el concepto de espacio de nombres.
Clientes
Los clientes hacen referencia a dispositivos o aplicaciones IoT que publican y se suscriben a mensajes MQTT.
Los dispositivos IoT son objetos físicos que están conectados a Internet para transmitir telemetría y recibir comandos. Pueden ser sensores, dispositivos, máquinas u otros objetos equipados con sensores y software integrados. Los sensores y el software les permiten comunicarse e interactuar entre sí y con el entorno alrededor de ellos. El valor de los dispositivos IoT se basa en su capacidad de proporcionar información y datos en tiempo real, lo que permite a las empresas y a los individuos tomar decisiones informadas y mejorar la eficiencia y la productividad.
Las aplicaciones IoT son software diseñado para interactuar con los datos de los dispositivos IoT y procesarlos. Normalmente incluyen componentes como la recopilación, el procesamiento, el almacenamiento, la visualización y el análisis de datos. Estas aplicaciones permiten a los usuarios supervisar y controlar dispositivos conectados, automatizar tareas y obtener información de los datos generados por los dispositivos IoT.
Autenticación de cliente
Event Grid tiene un registro de cliente que almacena información sobre los clientes que tienen permitido conectarse a él. Para que un cliente pueda conectarse, debe haber una entrada para ese cliente en el registro de cliente. Cuando un cliente se conecta al agente MQTT, debe autenticarse en él con las credenciales almacenadas en el registro de identidades. MQTT broker admite los siguientes mecanismos de autenticación del cliente:
- Autenticación de certificados X.509, que es el estándar de autenticación del sector en dispositivos IoT.
- Autenticación de Microsoft Entra ID, que es el estándar de autenticación de Azure para las aplicaciones. Más información sobre la autenticación de cliente de MQTT.
- Autenticación de OAuth 2.0 (JSON Web Token), que proporciona una opción ligera, segura y flexible para los clientes MQTT que no están aprovisionados en Azure.
Control de acceso
El control de acceso es fundamental para escenarios de IoT teniendo en cuenta la enorme escala de entornos de IoT y los desafíos de seguridad únicos de los dispositivos restringidos. Event Grid ofrece control de acceso basado en roles (RBAC) mediante un modelo de control de acceso flexible que le permite administrar la autorización de los clientes para publicar o suscribirse a temas.
Dada la enorme escala de entornos de IoT, la asignación de permisos para cada cliente a cada tema es increíblemente tediosa. El control de acceso flexible de Event Grid aborda este desafío de escala mediante la agrupación de clientes y temas en grupos de clientes y espacios de temas. Después de crear grupos de clientes y espacios de temas, puede configurar un enlace de permisos para conceder acceso a un grupo de clientes para publicar o suscribirse a un espacio de temas.
Los espacios de temas también proporcionan un control de acceso pormenorizado al permitirle controlar la autorización de cada cliente dentro de un grupo de clientes para publicar o suscribirse a su propio tema. Este control de acceso pormenorizado se logra mediante el uso de variables en plantillas de tema. Obtenga más información sobre el control de acceso.
Enrutamiento
Event Grid le permite enrutar los mensajes MQTT a webhooks o servicios de Azure para su posterior procesamiento. En consecuencia, puede crear soluciones de un extremo a otro usando los datos de IoT para el análisis de datos, el almacenamiento y las visualizaciones, entre otros casos de uso. La configuración de enrutamiento permite enviar todos los mensajes MQTT de los clientes a un tema de espacio de nombres de Event Grid o a un tema personalizado de Event Grid. Una vez que los mensajes están en el tema, se puede configurar una suscripción de eventos para consumir los mensajes del tema. Por ejemplo, esta funcionalidad le permite usar Event Grid para enrutar la telemetría de los dispositivos IoT a Event Hubs y, a continuación, a Azure Stream Analytics para obtener información de la telemetría del dispositivo. Obtenga más información sobre el enrutamiento.
Integrar el MQTT broker de Edge
Event Grid se integra con Azure IoT MQ para puentear su MQTT broker en el perímetro con la característica MQTT broker de Azure Event Grid en la nube. Azure IoT MQ es un nuevo MQTT broker distribuido para la informática perimetral, que se ejecuta en clústeres de Kubernetes habilitados para Arc. Puede conectarse al MQTT broker de Event Grid con la autenticación de Microsoft Entra ID (anteriormente Azure Active Directory) mediante la identidad administrada asignada por el sistema, lo que simplifica la administración de credenciales. Azure IoT MQ proporciona alta disponibilidad, escalabilidad y seguridad para los dispositivos y aplicaciones de IoT. Ahora está disponible en versión preliminar pública como parte de las operaciones de Azure IoT. Obtenga más información sobre cómo conectar Azure IoT MQ al MQTT broker de Azure Event Grid.
Eventos de ciclo de vida de los clientes MQTT
Los eventos de ciclo de vida de cliente permiten a las aplicaciones reaccionar ante eventos sobre el estado de conexión del cliente o las operaciones de recursos de cliente. Permite realizar un seguimiento del estado de conexión del cliente, reaccionar con una acción de mitigación para las desconexiones de cliente y realizar un seguimiento del espacio de nombres al que están asociados los clientes durante las conmutaciones por error automatizadas. Obtenga más información sobre los eventos del ciclo de vida del cliente MQTT.
Nombres de dominio personalizados
La compatibilidad con nombres de dominio personalizados permite a los usuarios asignar sus propios nombres de dominio a los puntos de conexión MQTT y HTTP del espacio de nombres de Event Grid, lo que mejora la seguridad y simplifica la configuración del cliente. Esta característica ayuda a las empresas a cumplir sus requisitos de seguridad y cumplimiento y elimina la necesidad de modificar los clientes ya vinculados al dominio. La asignación de un nombre de dominio personalizado a varios espacios de nombres también puede ayudar a mejorar la disponibilidad, administrar la capacidad y controlar la movilidad del cliente entre regiones. Más información sobre nombres de dominio personalizados.
Pasos siguientes
Consulte los siguientes artículos para obtener más información sobre el agente MQTT y sus conceptos principales.
- Publicación y suscripción a mensajes MQTT
- Tutorial: Enrutamiento de mensajes MQTT a Azure Event Hubs mediante temas de espacio de nombres
- Tutorial: Enrutamiento de mensajes MQTT a Azure Functions mediante temas personalizados