Compartir a través de


Publicación HTTP de mensajes MQTT con Azure Event Grid (versión preliminar)

La API de publicación HTTP de MQTT Broker de Azure Event Grid permite a los clientes publicar mensajes de transporte de telemetría de Message Queuing (MQTT) mediante solicitudes HTTP estándar. Esta funcionalidad complementa las conexiones directas de cliente MQTT. Proporciona una opción sencilla y escalable para los sistemas del lado servidor que prefieren HTTP para el control y el control del servidor a dispositivo, las actualizaciones o la administración de mensajes retenidos.

Nota:

Esta funcionalidad actualmente está en su versión preliminar.

Ventajas clave:

  • Permite que los servicios back-end envíen mensajes MQTT sin mantener abiertas las sesiones de MQTT persistentes.
  • Ayuda a proteger la estabilidad del agente limitando las sesiones MQTT por cliente.
  • Garantiza un procesamiento coherente para los mensajes que se originan en MQTT y HTTP.

Cuándo usar la publicación HTTP

Considere la posibilidad de usar la publicación HTTP cuando:

  • Los servicios back-end son nativos HTTP y necesitan enviar comandos de dispositivo o actualizaciones a través de MQTT.
  • Quiere administrar los mensajes retenidos sin abrir una conexión MQTT.
  • Debe escalar verticalmente la capacidad de publicación sin agotar los límites de sesión.

Cómo funciona

  1. Los clientes HTTP emiten una solicitud HTTP POST con los detalles de publicación de MQTT.
  2. Event Grid asigna elementos de solicitud HTTP a las propiedades estándar del paquete MQTT PUBLISH.
  3. Los mensajes fluyen a través de la canalización de enrutamiento y enriquecimiento de Event Grid, lo que garantiza la entrega y aplica cualquier enriquecimiento o transformación.

Ejemplo: MQTT Publish equivalente

PUBLISH Topic Name: devices/CXa-23112/prompt  
QoS: 1  
RETAIN: 0  
Response Topic: devices/CXa-23112/reply  
Correlation Data: >U±¶¶»/  
User Property: Urgency = alert  
User Property: RequestId = 55f4a7ee-b0b4-4d7f-8eb5-2edba2ced5d7  
Payload: Please accept terms of licensing and agreement

Ejemplo: solicitud de publicación HTTP

POST /mqtt/messages?topic=devices%2FCXa-23112%2Fprompt&api-version=2025-02-15-preview HTTP/1.1  
Host: nsname.westus3-1.ts.eventgrid.azure.net  
Authorization: Bearer <ENTRA_TOKEN_HERE>  
mqtt-qos: 1  
mqtt-retain: 0  
mqtt-response-topic: devices%2FCXa-23112%2Freply  
mqtt-correlation-data: PlXCscK2wrbCuy8=  
mqtt-user-properties: W3siVXJnZW5jeSI6ImFsZXJ0In0seyJSZXF1ZXN0SWQiOiI1NWY0YTdlZS1iMGI0LTRkN2YtOGViNS0yZWRiYTJjZWQ1ZDcifV0=  
Content-Type: text/plain;charset=UTF-8  
Date: Sun, 06 Nov 1994 08:49:37 GMT  
Content-Length: 46  

Please accept terms of licensing and agreement

Parámetros de solicitud

En la tabla siguiente se describe cómo los elementos de solicitud HTTP se asignan a las propiedades del paquete MQTT PUBLISH. Consulte la documentación original para obtener más información.

Elemento de publicación de MQTT Tipo y valores Ubicación Obligatorio Description
Nombre del tema Cadena codificada por porcentaje Consulta topic El tema MQTT en el que se va a publicar
QoS 0 o 1 Consulta qos o encabezado mqtt-qos No [default = 1] Nivel de calidad de servicio (QoS)
Marca RETAIN 0 o 1 Consulta retain o encabezado mqtt-retain No [default = 0] Si se debe conservar el mensaje
Tema de respuestas Cadena codificada por porcentaje Encabezado mqtt-response-topic No Tema de respuesta si es necesario
Datos de correlación Cadena de Base64 Encabezado mqtt-correlation-data No Datos adicionales para el seguimiento
Propiedades de usuario Matriz JSON Base64 Encabezado mqtt-user-properties No Propiedades de usuario personalizadas
Tipo de contenido Cuerda Encabezado content-type No Tipo de carga
Intervalo de expiración de mensajes Entero sin signo Encabezado mqtt-message-expiry No Período de retención en segundos
Indicador de formato de carga 0 o 1 Encabezado mqtt-payload-format-indicator No [predeterminado = 0] Indicador de formato
Carga Bytes Cuerpo HTTP No Cuerpo del mensaje

Notes:

  • Los valores de parámetro de consulta invalidan los valores de encabezado si ambos están presentes.
  • La codificación por porcentaje es necesaria para el tema y el tema de respuesta.
  • Los datos de correlación deben estar codificados en Base64.

Pasos generales para usar la publicación HTTP

  1. Prepare el token de portador de Microsoft Entra ID para la autenticación.
  2. Construya la solicitud HTTP POST al punto de conexión del agente MQTT de Event Grid.
  3. Incluya los parámetros de consulta necesarios, como el tema.
  4. Agregue encabezados opcionales para QoS, la marca RETAIN, el tema de respuesta y las propiedades de usuario.
  5. Agregue la carga como cuerpo HTTP.
  6. Envíe la solicitud.
  7. Confirme la entrega a través de registros y métricas en el portal de Event Grid.

Autenticación y autorización

  • La publicación HTTP usa Microsoft Entra ID para la autenticación.
  • Se necesita un token de portador en el encabezado de autorización.
  • El id. de objeto de Microsoft Entra se convierte en el identificador de cliente MQTT.
  • El modelo AuthN/AuthZ se alinea con las conexiones MQTT estándar.

Enrutamiento y observabilidad

Las métricas y los registros incluyen:

  • Protocolo: http-publish
  • Id. de solicitud
  • Tema
  • IP de origen
  • Entidad de seguridad de autorización

procedimientos recomendados

  • Use las claves de encabezado en minúsculas siempre que sea posible. Las claves de encabezado HTTP/2 no distinguen mayúsculas de minúsculas.
  • Supervise el rendimiento porque los mensajes HTTP tienden a ser mayores que los mensajes MQTT directos.
  • Observe que la publicación HTTP comparte los límites de rendimiento con mensajes publicados de MQTT directos.

Limitaciones

La publicación HTTP cuenta para la cuota de rendimiento general de MQTT. Supervise el uso para evitar superar los límites.