Utiliser le routage des messages IoT Hub pour envoyer des messages appareil-à-cloud à des services Azure

Le routage des messages vous permet d’envoyer des messages de vos appareils vers des services cloud de façon automatisée, évolutive et fiable. Le routage des messages peut être utilisé pour :

  • Envoyer des messages et des événements de télémétrie d’appareil au point de terminaison intégré et aux points de terminaison personnalisés. Les événements qui peuvent être routés incluent les événements de cycle de vie de l’appareil, les événements de changement de jumeau d’appareil, les événements de changement de jumeau numérique et les événements d’état de connexion de l’appareil.

  • Filtrez les données avant de les router en appliquant des requêtes enrichies. Le routage de messages vous permet d’interroger les propriétés et le corps d’un message, ainsi que les étiquettes et les propriétés d’un jumeau d’appareil. Pour plus d’informations, consultez Requêtes dans le routage des messages.

IoT Hub définit un format commun pour tous les envois de messages appareil-à-cloud à des fins d'interopérabilité entre les protocoles. Pour plus d’informations, consultez Créer et lire des messages IoT Hub.

Remarque

Certaines des fonctionnalités mentionnées dans cet article, comme la messagerie cloud-à-appareil, les jumeaux d’appareil et la gestion des appareils, sont disponibles uniquement dans le niveau Standard d’IoT Hub. Pour plus d’informations sur les niveaux de base et standard/gratuit d’IoT Hub, consultez Choisir le niveau IoT Hub correspondant à votre solution.

Points de terminaison de routage

Chaque hub IoT a un point de terminaison de routage par défaut appelé messages/événements compatible avec Event Hubs. Vous pouvez également créer des points de terminaison personnalisés qui pointent vers d’autres services dans votre abonnement Azure.

IoT Hub prend actuellement en charge les points de terminaison suivants pour le routage des messages :

  • Point de terminaison intégré
  • Conteneurs de stockage
  • Files d’attente Service Bus
  • Rubriques Service Bus
  • Event Hubs
  • Cosmos DB

Pour plus d’informations sur chacun de ces points de terminaison, consultez Points de terminaison IoT Hub.

Chaque message est routé vers tous les points de terminaison dont les requêtes de routage correspondent, ce qui signifie qu’un message peut être routé vers plusieurs points de terminaison. Cependant, si un message correspond à plusieurs itinéraires qui pointent vers le même point de terminaison, IoT Hub ne remet le message qu’une seule fois à ce point de terminaison.

IoT Hub doit pouvoir accéder en écriture à ces points de terminaison de service pour que le routage des messages fonctionne. Si vous configurez vos points de terminaison via le portail Azure, les autorisations nécessaires sont ajoutées pour vous. Si vous configurez vos points de terminaison à l’aide de PowerShell ou d’Azure CLI, vous devez fournir l’autorisation d’accès en écriture.

Pour découvrir comment créer des points de terminaison, consultez les articles suivants :

Veillez à configurer vos services pour prendre en charge le débit prévu. Par exemple, si vous utilisez Event Hubs comme point de terminaison personnalisé, vous devez configurer les unités de débit pour ce hub d’événements afin qu’il puisse gérer l’entrée des événements que vous envisagez d’envoyer par le biais du routage de messages IoT Hub. De même, lors de l’utilisation d’une file d’attente Service Bus comme point de terminaison, vous devez configurer la taille maximale afin que la file d’attente puisse contenir toutes les données entrantes jusqu’à ce qu’elles soient sorties par les consommateurs. Quand vous configurez pour la première fois votre solution IoT, vous devrez peut-être surveiller vos autres points de terminaison et effectuer les ajustements nécessaires à la charge réelle.

Si votre point de terminaison personnalisé est configuré avec un pare-feu, envisagez d’utiliser l’exception des premiers tiers Microsoft approuvés.

Route vers un point de terminaison dans un autre abonnement

Si la ressource de point de terminaison se trouve dans un abonnement différent de celui de votre hub IoT, vous devez configurer votre hub IoT comme service Microsoft approuvé pour pouvoir créer un point de terminaison personnalisé. Quand vous créez le point de terminaison personnalisé, définissez le Type d’authentification sur une identité affectée par l’utilisateur.

Pour plus d’informations, consultez Connectivité de sortie du hub IoT vers d’autres ressources Azure.

Routage des requêtes

Le routage des messages IoT Hub fournit également une fonctionnalité de requête pour filtrer les données avant de les router vers les points de terminaison. Chaque requête de routage que vous configurez a les propriétés suivantes :

Propriété Description
Nom Nom unique qui identifie la requête.
Source Origine du flux de données qui fait l’objet du traitement. Par exemple, télémétrie des appareils.
Condition Expression de requête pour la requête de routage qui est exécutée sur les propriétés de l’application de messages, les propriétés système, le corps des messages, les étiquettes de jumeau d’appareil et les propriétés de jumeau d’appareil, pour déterminer s’il s’agit d’une correspondance pour le point de terminaison.
Point de terminaison Nom du point de terminaison auquel IoT Hub envoie les messages qui correspondent à la requête. Nous vous recommandons de choisir un point de terminaison dans la même région que votre hub IoT.

Un même message peut correspondre à la condition de plusieurs requêtes de routage, auquel cas IoT Hub remet le message au point de terminaison associé à chaque requête ayant une correspondance. Par ailleurs, IoT Hub déduplique automatiquement la remise des messages. Ainsi, si un message correspond à plusieurs requêtes ayant la même destination, il n’est écrit qu’une seule fois dans cette destination.

Pour plus d’informations, consultez Résumé de requête de messages de routage IoT Hub.

Lire des données qui ont été routées

Consultez les articles suivants pour découvrir comment lire les messages à partir d’un point de terminaison.

Itinéraire de secours

La route de secours envoie tous les messages qui ne satisfont pas aux conditions de requête sur l’une des routes existantes au point de terminaison intégré (messages/événements), qui est compatible avec Event Hubs. Si le routage des messages est activé, vous pouvez activer la fonctionnalité de route de secours. Une fois qu’un itinéraire est créé, les données cessent de circuler vers le point de terminaison intégré, sauf si un itinéraire est créé vers ce point de terminaison. S’il n’existe aucune route vers le point de terminaison intégré et qu’une route de secours est activée, seuls les messages qui ne satisfont à aucune des conditions de requête sur les routes sont envoyés au point de terminaison intégré. Même si tous les itinéraires existants sont supprimés, la fonctionnalité d’itinéraire de secours doit être activée pour recevoir toutes les données au point de terminaison intégré.

Vous pouvez activer ou désactiver l’itinéraire de secours dans le portail Azure dans le panneau Routage des messages. Vous pouvez également utiliser Azure Resource Manager pour que FallbackRouteProperties utilise un point de terminaison personnalisé pour la route de secours.

Événements autres que les événements de télémétrie

En plus de la télémétrie de l’appareil, le routage des messages permet d’envoyer des événements autres que des événements de télémétrie, notamment :

  • Événements de changement du jumeau d'appareil
  • Événements de cycle de vie d'appareil
  • Événements de cycle de vie des travaux d’appareil
  • Événements de changement de jumeau numérique
  • Événements d'état de la connexion de l'appareil

Par exemple, si une route est créée avec la source de données définie sur Événements de changement du jumeau d'appareil, IoT Hub envoie les messages au point de terminaison qui contient le changement dans le jumeau d’appareil. De même, si une route est créée avec la source de données définie sur Événements de cycle de vie d’appareil, IoT Hub envoie un message qui indique si l’appareil ou le module a été supprimé ou créé. Pour plus d’informations sur les événements de cycle de vie des appareils, consultez Notifications de cycle de vie des appareils et des modules.

Lors de l’utilisation d’Azure IoT Plug-and-Play, un développeur peut créer des routes avec une source de données définie sur Événements de changement de jumeau numérique. IoT Hub envoie des messages chaque fois qu’une propriété de jumeau numérique est définie ou modifiée, qu’un jumeau numérique est remplacé ou qu’un événement de changement se produit pour le jumeau d’appareil sous-jacent. Enfin, si une route est créée avec la source de données définie sur Événements d’état de la connexion de l’appareil, IoT Hub envoie un message qui indique si l’appareil a été connecté ou déconnecté.

IoT Hub s’intègre également à Azure Event Grid pour publier des événements d’appareils et prendre en charge les intégrations en temps réel ainsi que l’automatisation des workflows basés sur ces événements. Pour découvrir ce qui convient le mieux à votre scénario, consultez les différences principales entre le routage des messages et Event Grid.

Limitations pour les événements d’état de connexion de l’appareil

Les événements d’état de connexion de l’appareil sont disponibles pour les appareils qui se connectent à l’aide du protocole MQTT ou AMQP, ou à l’aide de l’un de ces protocoles sur WebSockets. Les requêtes effectuées uniquement avec HTTPS ne déclenchent pas de notifications d’état de connexion de l’appareil. Pour qu’IoT Hub commence à envoyer des événements d’état de connexion de l’appareil, après l’ouverture d’une connexion, un appareil doit effectuer l’opération de réception de message cloud-à-appareil ou l’opération d’envoi de données de télémétrie appareil-à-cloud . En dehors des Kits de développement logiciel (SDK) Azure IoT, dans MQTT, ces opérations sont équivalentes à S’ABONNER à des publications ou à les PUBLIER dans les rubriquesde messagerie appropriées. Sur AMQP, ces opérations correspondent à joindre ou transférer un message sur les chemins de liens appropriés. Pour plus d’informations, consultez les articles suivants :

IoT Hub ne signale pas chaque événement de connexion et de déconnexion d’appareil individuel, mais il publie plutôt l’état de connexion actuel consigné sur la base d’un instantané périodique de 60 secondes. La réception d’un même événement d’état de connexion avec des numéros de séquence différents ou des événements d’état de connexion différents signifie qu’il y a eu une modification de l’état de la connexion de l’appareil au cours de la deuxième fenêtre de 60 secondes.

Itinéraires de test

Quand vous créez un nouvelle route ou que modifiez une route existante, vous devez tester la requête de route avec un exemple de message. Vous pouvez tester des routes individuelles ou toutes les routes à la fois. Aucun message n’est routé vers les points de terminaison pendant le test. Vous pouvez utiliser le portail Azure, Azure Resource Manager, Azure PowerShell et Azure CLI pour les tests. Les résultats vous permettent de déterminer si l’exemple de message correspondait ou non à la requête, ou si le test n’a pas pu s’exécuter, l’exemple de message ou la syntaxe de la requête étant incorrects. Pour plus d’informations, consultez Tester une route et Tester toutes les routes.

Latence

Quand vous routez des messages de télémétrie appareil-à-cloud, une légère augmentation de la latence de bout en bout se produit après la création du premier itinéraire.

Dans la plupart des cas, l’augmentation moyenne de la latence est inférieure à 500 millisecondes. Toutefois, la latence que vous rencontrez peut varier et peut être supérieure en fonction du niveau de votre hub IoT et de votre architecture de solution. Vous pouvez surveiller la latence à l’aide des métriques IoT Hub Routage : latence des messages pour les messages/événements ou d2c.endpoints.latency.builtIn.events. La création ou la suppression d’une route après la première n’impacte pas la latence de bout en bout.

Superviser et dépanner

IoT Hub fournit plusieurs métriques liées aux routages et aux point de terminaison pour vous donner une vue d’ensemble de l’intégrité de votre hub et des messages envoyés. Vous pouvez également suivre les erreurs qui se produisent lors de l’évaluation d’une requête de routage et de l’intégrité du point de terminaison telles que perçues par IoT Hub grâce à la catégorie Itinéraires dans les journaux de diagnostic d’IoT Hub. Pour en savoir plus sur l’utilisation de métriques et de journaux de ressources avec IoT Hub, consultez Monitoring d’Azure IoT Hub.

Vous pouvez utiliser l’API REST Obtenir l’intégrité du point de terminaison pour récupérer l’état d’intégrité des points de terminaison.

Pour obtenir plus d’informations et de l’aide sur le résolution des problèmes liés au routage, utilisez le Guide de résolution des problèmes concernant le routage.