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.
En esta guía, aprenderá a usar el patrón de mensajería de solicitud-respuesta de MQTT v5 para implementar el flujo de respuesta de comandos con MQTT broker. Considere un escenario de ejemplo en el que una aplicación en la nube envía comandos a los dispositivos y recibe respuestas de los dispositivos.
Requisitos previos
- Ha creado un espacio de nombres de Event Grid con MQTT broker habilitado. Consulte este Inicio rápido: Publicación y suscripción en un tema MQTT para crear el espacio de nombres, subrecursos y publicar o suscribirse a un tema de MQTT.
Configuración necesaria en el espacio de nombres de Event Grid para implementar el patrón de mensajería Solicitud-respuesta
Esta es la configuración de ejemplo para lograr el patrón de mensajería Solicitud-respuesta mediante MQTT broker.
Certificado de CA
Agregue el certificado de CA que se usa para firmar los certificados de cliente.
Clientes
- Registre la aplicación en la nube como cliente en el espacio de nombres. Agregue un atributo denominado "type" al cliente con el valor "cloudApp".
- Registre los dispositivos como clientes en el espacio de nombres. Agregue el atributo "type" a los clientes con el valor como "device".
Puede usar cualquier método de autenticación compatible. Esta configuración de ejemplo muestra la autenticación basada en la cadena de certificados de CA y supone que el nombre de autenticación del cliente está en el campo Asunto del certificado de cliente.
Grupos de clientes
Cree dos grupos de clientes, uno para el cliente de la aplicación en la nube y otro para todos los dispositivos.
El grupo de clientes "cloudAppGrp" incluye los clientes con el valor del atributo "type" establecido en "cloudApp".
El grupo de clientes "devicesGrp" incluye todos los clientes de tipo "device".
Espacios de temas
Cree el espacio de temas "requestDesiredProperties" con la plantilla de tema "devices/+/desired" en la que la aplicación en la nube publica solicitudes de propiedades deseadas. El carácter comodín permite a la aplicación en la nube publicar una solicitud en cualquier dispositivo.
Cree el espacio de temas "responseReportedProperties" con la plantilla de tema "devices/+/reported" a la que se suscribe la aplicación en la nube para recibir respuestas de propiedades notificadas de los dispositivos.
Cree el espacio de temas "deviceDesiredSub" con la plantilla de tema "devices/${client.authenticationName}/desired" a la que los dispositivos se suscriben para recibir las solicitudes de propiedad deseada de la aplicación en la nube. La variable de nombre de autenticación se usa para asegurarse de que un dispositivo puede recibir mensajes destinados solo a ese dispositivo.
Cree el espacio de temas "deviceReportedPub" con la plantilla de tema "devices/${client.authenticationName}/reported" en la que los dispositivos publican respuestas de propiedad notificada.
Enlaces de permisos
Cree enlaces de permisos que permitan que el grupo de aplicaciones en la nube publique en el tema de solicitud y suscríbase al tema de respuesta. El grupo de dispositivos se suscribe al tema de solicitud y publica en el tema de respuesta.
Cree el enlace de permisos "clientAppDesiredPub" que conceda a "cloudAppGrp" acceso de publicador al espacio de temas "requestDesiredProperties".
Cree el enlace de permisos "clientAppReportedSub" que conceda a "cloudAppGrp" acceso de suscriptor al espacio de temas "responseReportedProperties".
Cree el enlace de permisos "deviceDesiredSub" que conceda a "devicesGrp" acceso de suscriptor al espacio de temas "deviceDesiredSub".
Cree el enlace de permisos "deviceReportedPub" que conceda a "devicesGrp" acceso de publicador al espacio de temas "deviceReportedPub".
Mostrar mensajes de solicitud-respuesta mediante la aplicación MQTTX
Conecte la aplicación en la nube y los dispositivos al MQTT broker mediante la aplicación MQTTX.
Agregar "devices/+/reported" como suscripción al cliente de la aplicación en la nube
Agregue sus propios temas de solicitud como suscripciones a dispositivos. Por ejemplo, agregue "devices/device1/desired" como suscripción al cliente "device1".
La aplicación en la nube publica una solicitud a device2 en el tema "devices/device2/desired" e incluye un tema de respuesta "devices/device2/reported". La aplicación en la nube incluye datos de correlación como "device2-tempupdate1".
device2 recibe el mensaje en el tema "devices/device2/desired" e informa del estado actual de sus propiedades en el tema de respuesta "devices/device2/reported" al cliente de la aplicación en la nube. Además, device2 incluye datos de correlación como "device2-tempupdate1", lo que permite a la aplicación en la nube realizar un seguimiento de la respuesta a la solicitud original.
Nota:
- Estos mensajes MQTT se pueden enrutar a través de suscripciones de Event Grid y escribirse en un almacenamiento o caché para realizar un seguimiento del estado deseado y actual de un dispositivo.
- Los eventos de ciclo de vida del cliente, como "conectado" y "desconectado" se pueden usar para realizar un seguimiento de la disponibilidad de un dispositivo para volver a enviar las solicitudes según sea necesario.
- El patrón de mensaje solicitud-respuesta también se puede lograr en MQTT v3.1.1, incluyendo el tema Respuesta en la carga del mensaje de solicitud. El cliente de dispositivo debe analizar la carga del mensaje, identifica el tema Respuesta y publica la respuesta en ese tema.
Pasos siguientes
- 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
- Más información sobre los eventos del ciclo de vida del cliente.
- Para obtener ejemplos de código, vaya a este repositorio.