Partager via


Publication HTTP de messages MQTT avec Azure Event Grid

L’API de publication HTTP Azure Event Grid MQTT Broker permet aux clients de publier des messages MQTT (Message Queuing Telemetry Transport) à l’aide de requêtes HTTP standard. Cette fonctionnalité complète les connexions clientes MQTT directes. Il fournit une option simple et évolutive pour les systèmes côté serveur qui préfèrent HTTP pour la commande et le contrôle de serveur à appareil, les mises à jour ou la gestion des messages conservés.

Principaux avantages :

  • Permet aux services principaux d’envoyer des messages MQTT sans conserver les sessions MQTT persistantes ouvertes.
  • Permet de protéger la stabilité du répartiteur en limitant les sessions MQTT par client.
  • Garantit un traitement cohérent pour les messages provenant de MQTT et HTTP.

Quand utiliser la publication HTTP

Envisagez d’utiliser la publication HTTP quand :

  • Vos services principaux sont natifs HTTP et doivent envoyer des commandes d’appareil ou des mises à jour sur MQTT.
  • Vous souhaitez gérer les messages conservés sans ouvrir de connexion MQTT.
  • Vous devez effectuer un scale-up de la capacité de publication sans épuiser les limites de session.

Fonctionnement

  1. Les clients HTTP émettent une requête HTTP POST avec les détails de publication MQTT.
  2. Event Grid mappe les parties de requête HTTP aux propriétés standard du paquet PUBLISH MQTT.
  3. Les messages transitent par le pipeline de routage et d’enrichissement Event Grid, ce qui garantit les garanties de remise et applique toute enrichissement ou transformation.

Exemple : équivalent de publication MQTT

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

Exemple : requête de publication 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

Paramètres de la demande

Le tableau suivant décrit comment les parties de requête HTTP mappent aux propriétés de paquets PUBLISH MQTT. Pour plus d’informations, reportez-vous à la documentation d’origine.

Composant Publication MQTT Type / Valeurs Emplacement Obligatoire Descriptif
Nom de la rubrique Chaîne encodée en pourcentage Requête topic Oui Rubrique MQTT à publier sur
QoS 0 ou 1 Requête qos ou en-tête mqtt-qos Non [default = 1] Niveau qualité de service (QoS)
RETAIN drapeau 0 ou 1 Requête retain ou en-tête mqtt-retain Non [default = 0] Indique s’il faut conserver le message
Rubrique de réponse Chaîne encodée en pourcentage En-tête mqtt-response-topic Non Rubrique de réponse si nécessaire
Données de corrélation Chaîne Base64 En-tête mqtt-correlation-data Non Données supplémentaires pour le suivi
Propriétés de l’utilisateur Tableau JSON Base64 En-tête mqtt-user-properties Non Propriétés utilisateur personnalisées
Type de contenu Chaîne En-tête content-type Non Type de charge utile
Intervalle d’expiration du message Entier non signé En-tête mqtt-message-expiry Non Période de rétention en secondes
Indicateur de format de charge utile 0 ou 1 En-tête mqtt-payload-format-indicator Non [default = 0] Indicateur de format
Charge utile Octets Corps HTTP Non Corps du message

Notes:

  • Les valeurs des paramètres de requête remplacent les valeurs d’en-tête si les deux sont présentes.
  • L’encodage de pourcentage est requis pour la rubrique et la rubrique de réponse.
  • Les données de corrélation doivent être encodées en Base64.

Étapes générales pour l’utilisation de la publication HTTP

  1. Préparez votre jeton du porteur d’ID Microsoft Entra pour l’authentification.
  2. Construisez votre requête HTTP POST sur votre point de terminaison de répartiteur MQTT Event Grid.
  3. Incluez les paramètres de requête requis, comme la rubrique.
  4. Ajoutez des en-têtes facultatifs pour QoS, l’indicateur, la RETAIN rubrique de réponse et les propriétés utilisateur.
  5. Ajoutez votre charge utile en tant que corps HTTP.
  6. Envoyez la demande.
  7. Confirmez la remise via les journaux et les métriques dans le portail Event Grid.

Authentification et autorisation

  • Http Publish utilise l’ID Microsoft Entra pour l’authentification.
  • Un jeton du porteur est nécessaire dans l’en-tête d’autorisation.
  • L’ID d’objet Microsoft Entra devient l’ID client MQTT.
  • Le modèle AuthN/AuthZ s’aligne sur les connexions MQTT standard.

Routage et observabilité

Les mesures et les journaux sont les suivants :

  • Protocole : http-publish
  • Demande d'ID
  • Sujet
  • IP Source
  • Principal d’autorisation

Meilleures pratiques

  • Utilisez les clés d’en-tête minuscules si possible. Les clés d’en-tête HTTP/2 ne respectent pas la casse.
  • Surveillez le débit, car les messages HTTP ont tendance à être plus volumineux que les messages MQTT directs.
  • Notez que http Publish partage des limites de débit avec des messages publiés MQTT directs.

Limitation

La publication HTTP compte pour votre quota de débit MQTT global. Surveillez votre utilisation pour éviter de dépasser les limites.