Cuando los dispositivos publican cargas útiles en distintos formatos sobre el mismo tema, los suscriptores no disponen de un método estándar para determinar cómo analizarlas sin inspeccionar la propia carga útil. MQTT 5.0 introduce Payload Format Indicator y Content Type, dos propiedades de mensaje que permiten a los publicadores declarar el formato y el contenido directamente en el encabezado del mensaje. IoT Platform reenvía ambas propiedades a los suscriptores sin modificarlas, lo que permite el enrutamiento basado en formato sin necesidad de inspeccionar la carga útil.
Funcionamiento de las propiedades de los mensajes
MQTT 5.0 añade dos propiedades opcionales a los mensajes PUBLISH y a los mensajes de última voluntad: Payload Format Indicator y Content Type. En conjunto, proporcionan a los suscriptores el contexto necesario para analizar la carga útil de un mensaje sin inspeccionar sus bytes sin procesar.

Payload Format Indicator
Payload Format Indicator es un solo byte que indica cómo se codificó la carga útil. Valores válidos:
1: la carga útil contiene datos de caracteres codificados en UTF-8.
0: la carga útil está codificada en un formato no especificado, como datos binarios.
Content Type
Content Type es una cadena UTF-8 que describe la naturaleza de la carga útil del mensaje. Establezca este valor con un tipo MIME (por ejemplo, text/plain para archivos de texto) o con cualquier cadena definida por la aplicación que ayude a los suscriptores a enrutar y procesar el mensaje.
IoT Platform reenvía el valor de Content Type a los suscriptores tal como se recibió.
Content Type no se puede modificar durante el reenvío del mensaje. Para adjuntar metadatos modificables en tránsito, utilice User Property; es la única propiedad que permanece editable durante el reenvío del mensaje.
Casos de uso
Las propiedades de los mensajes mejoran la interoperabilidad en escenarios de mensajería entre sistemas donde los dispositivos o servicios generan cargas útiles en distintos formatos. Estas propiedades habilitan dos capacidades clave:
Admitir cargas útiles en varios formatos de codificación y tipos de contenido dentro del mismo tema.
Enrutar y filtrar mensajes en nodos intermedios sin analizar la carga útil.
Compatibilidad con formatos de codificación y tipos de contenido mixtos
En MQTT, todos los datos de un tema suelen compartir el mismo formato de codificación. A medida que crecen las implementaciones de IoT, los dispositivos frecuentemente necesitan publicar cargas útiles en distintos formatos sobre el mismo tema. Antes de MQTT 5.0, los suscriptores debían inspeccionar la propia carga útil o depender de convenciones de nomenclatura de temas para determinar cómo analizarla.
Con las propiedades de los mensajes, el publicador declara el formato en el encabezado del mensaje. Los suscriptores leen Payload Format Indicator y Content Type antes de acceder a la carga útil para enrutarla o analizarla según corresponda.
Dispositivo 1: publica cadenas JSON.
Dispositivo 2: publica datos binarios en Protocol Buffers (Protobuf).
