Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- Les clients HTTP émettent une requête HTTP
POSTavec les détails de publication MQTT. - Event Grid mappe les parties de requête HTTP aux propriétés standard du paquet PUBLISH MQTT.
- 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
- Préparez votre jeton du porteur d’ID Microsoft Entra pour l’authentification.
- Construisez votre requête HTTP
POSTsur votre point de terminaison de répartiteur MQTT Event Grid. - Incluez les paramètres de requête requis, comme la rubrique.
- Ajoutez des en-têtes facultatifs pour QoS, l’indicateur, la
RETAINrubrique de réponse et les propriétés utilisateur. - Ajoutez votre charge utile en tant que corps HTTP.
- Envoyez la demande.
- 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.