Si un produit génère moins de 1 000 QPS de messages d'appareil et que vous avez besoin d'un traitement granulaire, transférez les messages d'IoT Platform vers Simple Message Queue (anciennement MNS) (SMQ) pour consommation. La configuration d'un abonnement côté serveur pour un produit et un type de message crée automatiquement une file d'attente SMQ. Votre client SMQ écoute cette file d'attente pour recevoir les messages d'appareil.
Prérequis
Informations générales
Alibaba Cloud Simple Message Queue (anciennement MNS) (SMQ) est un service de messagerie distribué. SMQ permet le transfert de données et la distribution de notifications entre les composants d'applications distribuées.
IoT Platform utilise le modèle de messagerie basé sur les files d'attente de SMQ pour recevoir les messages d'appareil. Consultez Fonctionnalités du modèle de messagerie basé sur les files d'attente et Concepts de base du modèle de messagerie basé sur les files d'attente.
|
Terme |
Description |
|
Abonnement côté serveur MNS |
La configuration d'un abonnement côté serveur pour un produit et un type de message dans IoT Platform entraîne la création automatique d'une file d'attente SMQ. |
|
Client MNS |
Consommateur utilisant le SDK cloud SMQ sur votre serveur métier pour recevoir les messages d'appareil. Guide du développeur du SDK cloud SMQ : Téléchargement et utilisation du SDK. |
|
Type de message |
Catégorie de messages classés par topic d'appareil. Une fois abonné à un type de message, seuls les messages d'appareil des topics correspondants sous ce type peuvent être transférés au client MNS. Les topics d'appareil pour chaque type de message sont répertoriés dans le tableau Topics des types de messages ci-dessous. |
IoT Platform propose des abonnements côté serveur et le transfert de données. Ces deux mécanismes transfèrent les messages d'appareil vers un client SMQ pour consommation. Le transfert de données permet de spécifier des topics d'appareil et de traiter les données avant le transfert. Consultez la Comparaison des solutions de transfert de données. Pour configurer le transfert de données, reportez-vous à Ajouter une source de données pour transférer des données et Transférer des données vers Message Service (MNS).
Limites
Les abonnements côté serveur MNS ne sont pas pris en charge pour les instances Enterprise dans les régions Chine (Pékin), Chine (Shenzhen), Singapour, Japon (Tokyo), États-Unis (Virginie), États-Unis (Silicon Valley) et Allemagne (Francfort).
Un seul abonnement à une file d'attente SMQ est autorisé par produit. Les messages dépassant la limite d'abonnement côté serveur MNS ne sont pas transférés. Pour les limites relatives aux files d'attente, consultez Limites.
Après la création d'un abonnement côté serveur MNS, SMQ facture des frais d'utilisation des ressources de file d'attente, même si aucun message n'est transféré vers celle-ci.
Chaque message reçu par une file d'attente SMQ ne peut pas dépasser 64 Ko. Les messages trop volumineux sont supprimés.
Facturation
Le nombre de messages d'appareil transférables vers SMQ dépend de la spécification Message Forwarding TPS disponible de l'instance de l'appareil. Pour les instances publiques, le Message Forwarding TPS est fixé à 5 messages/seconde et est gratuit. Pour les instances Enterprise, la spécification Message Forwarding TPS est facturée par abonnement. Le volume disponible dépend de la spécification Message Forwarding TPS achetée pour l'instance. Consultez la Vue d'ensemble de la facturation.
SMQ applique des frais pour la réception des messages. Reportez-vous à la section Facturation.
Créer un abonnement côté serveur
Lorsque vous créez un abonnement côté serveur MNS pour un produit et un type de message dans IoT Platform, une file d'attente est automatiquement créée dans la même région, dans SMQ, sous votre compte. Une application utilisant le SDK cloud SMQ peut écouter cette file d'attente pour recevoir les messages d'appareil auxquels elle est abonnée.
Connectez-vous à la console IoT Platform.
Sur la page Overview, cliquez sur All environment. Dans l'onglet All environment, localisez l'instance à gérer, puis cliquez sur son ID ou son nom.
Dans le volet de navigation de gauche, choisissez .
Sur la page Server-side Subscription, dans l'onglet Subscription List, cliquez sur Create Subscription.
-
Dans la boîte de dialogue Create Subscription, configurez les paramètres et cliquez sur OK.
Paramètre
Description
Product
Sélectionnez le produit dont vous souhaitez recevoir les messages d'appareil.
Subscription Type
Sélectionnez MNS.
Authorization
Cliquez sur Authorize, puis activez SMQ et accordez les permissions comme indiqué.
RemarqueSi vous avez déjà activé SMQ et accordé les permissions, ignorez cette étape.
Authorize Now
Cliquez sur Authorize Now, puis sur Agree to Authorization. Le système crée le rôle AliyunIOTAccessingMNSRole afin d'accorder à IoT Platform les permissions nécessaires pour accéder à SMQ et y transférer des messages.
RemarqueSi le rôle AliyunIOTAccessingMNSRole a déjà été créé, ignorez cette étape.
Message Type to Push
Sélectionnez les types de messages auxquels vous abonner :
ImportantPour les produits et appareils situés sous une passerelle cloud, seules les données provenant des Device-reported messages, des Device status change notifications et des Device lifecycle changes peuvent être envoyées. Topics de transfert de messages et formats de données : Communication de messages via MQTT, Transfert de messages via GB/T 32960, Transfert de messages via JT/T 808.
-
Device-reported messages : Messages provenant des topics dont l'Operation Permission est définie sur Publish dans la liste des topics de tous les appareils du produit.
Les messages signalés par l'appareil incluent des données personnalisées et des données de modèle TSL (Thing Specification Language) (propriétés signalées, événements signalés, réponses aux réglages de propriétés et réponses aux invocations de services). Les données de modèle TSL envoyées au serveur sont traitées par IoT Platform. Format des données : Format des données.
Par exemple, un produit comporte trois catégories de topics :
-
/${productKey}/${deviceName}/user/get, qui dispose de la permission d'abonnement. -
/${productKey}/${deviceName}/user/update, qui dispose de la permission de publication. -
/${productKey}/${deviceName}/thing/event/property/post, qui dispose de la permission de publication.
L'abonnement côté serveur envoie alors les messages des catégories de topics disposant de la permission de publication, à savoir
/${productKey}/${deviceName}/user/updateet/${productKey}/${deviceName}/thing/event/property/post. -
-
Device status change notifications : Messages envoyés lorsque l'état en ligne ou hors ligne d'un appareil du produit change.
-
Sub-device discovery reports from gateway : La passerelle signale à IoT Platform les informations sur les sous-appareils découverts. Cela nécessite la prise en charge par l'application sur la passerelle. Ce type de message est spécifique aux produits de type passerelle.
-
Device topology changes : Messages concernant la création et la suppression de la topologie entre un sous-appareil et une passerelle. Ce type de message est spécifique aux produits de type passerelle.
-
Device lifecycle changes : Messages concernant la création, la suppression, la désactivation et l'activation d'appareils.
-
TSL model historical data reports : Données historiques des propriétés et événements signalés par l'appareil.
-
OTA update status notifications : Notifications d'événements pour les mises à jour d'appareils réussies ou échouées lors de la vérification des packages de mise à jour et des mises à jour OTA (over-the-air) par lots.
Tableau 1. Description des paramètres
Type de message
Description du topic
Références
Device-reported messages : Topic personnalisé
Topic personnalisé dont l'Operation Permission est définie sur Publish. Le topic de transfert de messages dans un format de données personnalisé est identique au topic personnalisé d'origine.
Device-reported messages : Données de modèle TSL
Les topics de transfert de messages incluent les éléments suivants :
-
Topic de signalement des propriétés de l'appareil :
/${productKey}/${deviceName}/thing/event/property/post. -
Topic de signalement des événements de l'appareil :
/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post. -
Topic de signalement des propriétés de l'appareil par lot :
/${productKey}/${deviceName}/thing/property/batch/post. -
Topic de signalement des événements de l'appareil par lot :
/${productKey}/${deviceName}/thing/event/batch/post. -
Topic de retour de réponse à une commande cloud :
/${productKey}/${deviceName}/thing/downlink/reply/message.
Les topics correspondants pour les données brutes signalées par l'appareil sont les suivants :
-
Topic de signalement des propriétés de l'appareil :
/sys/${productKey}/${deviceName}/thing/event/property/post. -
Topics de signalement des événements de l'appareil :
/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post,/sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:{tsl.event.identifier}/post. -
Topic de signalement par lot des propriétés et événements de l'appareil :
/sys/${productKey}/${deviceName}/thing/event/property/batch/post. -
Topic de retour de réponse à une commande cloud :
/sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}_reply
Device status change notifications
IoT Platform transfère directement les messages concernant les changements d'état en ligne/hors ligne de l'appareil. Le topic est
/as/mqtt/status/${productKey}/${deviceName}.Sub-device discovery reports from gateway
Topic spécifique aux appareils de type passerelle :
/${productKey}/${deviceName}/thing/list/found. La passerelle signale à IoT Platform les informations sur les sous-appareils découverts, qui sont ensuite transférées.Device topology changes
Topic spécifique aux appareils de type passerelle :
/${productKey}/${deviceName}/thing/topo/lifecycle. Ce topic sert à transférer les messages concernant la création et la suppression de la topologie entre un sous-appareil et une passerelle.Topic correspondant pour les données brutes signalées par l'appareil :
/sys/${productKey}/${deviceName}/thing/topo/change.Device lifecycle changes
IoT Platform transfère directement les messages concernant la création, la suppression, la désactivation et l'activation d'appareils. Le topic est
/${productKey}/${deviceName}/thing/lifecycle.TSL model historical data reports
Les topics de transfert de messages incluent les éléments suivants :
-
Topic de signalement des données historiques de propriétés :
/${productKey}/${deviceName}/thing/event/property/history/post. -
Topic de signalement des données historiques d'événements :
/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/history/post.
Topic de signalement des données historiques de modèle TSL :
/sys/${productKey}/${deviceName}/thing/event/property/history/post.OTA update status notifications
Les topics de transfert de messages incluent les éléments suivants :
-
Topic de signalement des résultats de mise à jour OTA :
/${productKey}/${deviceName}/ota/upgrade. -
Topic de signalement de la progression de la mise à jour OTA :
/${productKey}/${deviceName}/ota/progress/post.
Topic de signalement de la progression de la mise à jour :
/ota/device/progress/${productKey}/${deviceName}. -
-
Dans la boîte de dialogue de confirmation qui s'affiche, cliquez sur OK.
Une file d'attente SMQ est automatiquement créée dans SMQ. Le nom de la file d'attente suit le format
aliyun-iot-${productKey}, par exemplealiyun-iot-ws4******.RemarqueLa suppression d'un abonnement côté serveur MNS dans IoT Platform entraîne également la suppression automatique de la file d'attente SMQ correspondante dans SMQ.
Développer un client consommateur
Après avoir configuré un abonnement côté serveur MNS, utilisez le SDK cloud SMQ sur votre serveur métier pour écouter la file d'attente SMQ et recevoir les messages d'appareil abonnés. Cela permet à votre application cloud SMQ de recevoir les messages d'appareil provenant d'IoT Platform.
IoT Platform recommande l'exemple ConsumerDemo du modèle de messagerie basé sur les files d'attente dans le SDK Java SMQ pour écouter la file d'attente SMQ créée, par exemple aliyun-iot-ws4******.
Téléchargez le dernier package d'exemples depuis les Notes de version du SDK Java. Consultez ConsumerDemo dans le guide d'utilisation des files d'attente.
Dans le fichier ConsumerDemo, configurez le nom de la file d'attente SMQ créée automatiquement par IoT Platform, par exemple aliyun-iot-ws4******.
CloudQueue queue = client.getQueueRef("aliyun-iot-ws4******");
Format des données des messages reçus
Une fois qu'un appareil se connecte à IoT Platform et envoie des messages, le client SMQ reçoit les messages au format suivant. Développement côté appareil : Connecter un appareil à l'aide d'un SDK d'appareil.
{
"messageid":" ",
"messagetype":"upload",
"topic":"/al12345****/device123/user/update",
"payload":" ",
"timestamp": " "
}
|
Paramètre |
Description |
|
messageid |
ID du message généré par IoT Platform. |
|
messagetype |
Type de message. Valeurs valides :
|
|
topic |
Topic IoT Platform écouté par le serveur. Les topics sont répertoriés dans le tableau Descriptions des topics de la section Créer un abonnement côté serveur. |
|
payload |
Données du message encodées en Base64. Format des données du topic et du payload pour les messages transférés vers Simple Message Queue (anciennement MNS) : Format des données. |
|
timestamp |
Horodatage, au format Epoch. |
Références
Vérifiez les ressources TPS de transfert de messages disponibles sur la page de détails de l'instance pour vous assurer que les messages d'appareil peuvent être transférés vers SMQ pour consommation. Consultez Afficher les ressources disponibles d'une instance. Si les ressources sont insuffisantes, mettez à niveau l'instance. Reportez-vous à Mettre à niveau une instance facturable.
Consultez le nombre de messages reçus dans la section Afficher les métriques de file d'attente.
Envoyez les journaux d'opérations des messages vers Simple Log Service à l'aide de la fonctionnalité de gestion des journaux. Pour diagnostiquer les exceptions de confirmation de messages, utilisez le MessageId afin d'interroger les traces de messages. Consultez Envoyer des journaux vers Simple Log Service et Afficher les journaux dans Simple Log Service.
Tutoriel sur la réception de messages de changement d'état d'appareil en écoutant une file d'attente SMQ : Exemple d'abonnement côté serveur (MNS).
SMQ fournit des SDK dans plusieurs langages (Python, C#, PHP) pour écouter les files d'attente SMQ. Consultez la section Téléchargement et utilisation du SDK.