Compartir a través de


Implementación del patrón de mensajería de solicitud-respuesta mediante la característica de MQTT broker de Azure Event Grid

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

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.

Screenshot showing the list of configured certificates.

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.

Screenshot showing the list of configured clients.

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".

    Screenshot showing the list of configured client groups.

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.

    Screenshot showing the device desired subscribe topic space configuration.

  • 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".

    Screenshot showing the list of configured permission bindings.

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".

    Screenshot showing the configuration to include response topic and correlation data.

  • 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.

    Screenshot showing the response message from device to cloud application.

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