Lorsque des appareils publient des charges utiles dans différents formats sur un même sujet, les abonnés ne disposent d'aucune méthode standard pour déterminer comment les analyser sans inspecter la charge utile elle-même. MQTT 5.0 introduit l'indicateur de format de charge utile et le type de contenu : deux propriétés de message qui permettent aux éditeurs de déclarer le format et le contenu directement dans l'en-tête du message. IoT Platform transfère ces deux propriétés aux abonnés sans modification, ce qui permet un routage conscient du format sans inspection de la charge utile.
Fonctionnement des propriétés des messages
MQTT 5.0 ajoute deux propriétés facultatives aux messages PUBLISH et aux messages will : l'indicateur de format de charge utile et le type de contenu. Ensemble, elles fournissent aux abonnés suffisamment de contexte pour analyser la charge utile d'un message sans inspecter ses octets bruts.

Indicateur de format de charge utile
L'indicateur de format de charge utile est un octet unique qui indique le mode d'encodage de la charge utile. Valeurs valides :
1 : la charge utile contient des données caractères encodées en UTF-8.
0 : la charge utile est encodée dans un format non spécifié, comme des données binaires.
Type de contenu
Le type de contenu est une chaîne UTF-8 qui décrit la nature de la charge utile du message. Définissez-le sur un type MIME, par exemple text/plain pour les fichiers texte, ou sur toute chaîne définie par l'application qui aide les abonnés à router et à traiter le message.
IoT Platform transfère la valeur du type de contenu aux abonnés telle quelle.
Le type de contenu ne peut pas être modifié lors du transfert des messages. Pour joindre des métadonnées modifiables pendant le transit, utilisez plutôt la propriété utilisateur (User Property) : c'est la seule propriété qui reste modifiable lors du transfert des messages.
Cas d'utilisation
Les propriétés des messages améliorent l'interopérabilité dans les scénarios de messagerie inter-systèmes où les appareils ou les services produisent des charges utiles dans différents formats. Elles permettent deux fonctionnalités clés :
Prise en charge de plusieurs formats d'encodage et types de contenu pour les charges utiles sur un même sujet.
Routage et filtrage des messages au niveau des nœuds intermédiaires sans analyse de la charge utile.
Compatibilité avec les formats d'encodage et les types de contenu mixtes
Dans MQTT, toutes les données sur un sujet partagent généralement le même format d'encodage. À mesure que les déploiements IoT se développent, les appareils doivent souvent publier des charges utiles dans différents formats sur un même sujet. Avant MQTT 5.0, les abonnés devaient inspecter la charge utile elle-même — ou s'appuyer sur des conventions de dénomination des sujets — pour déterminer comment l'analyser.
Avec les propriétés des messages, l'éditeur déclare le format dans l'en-tête du message. Les abonnés lisent l'indicateur de format de charge utile et le type de contenu avant de toucher à la charge utile, puis effectuent le routage ou l'analyse en conséquence.
Appareil 1 : publie des chaînes JSON.
Appareil 2 : publie des données binaires Protocol Buffers (Protobuf).
