IoT Platform transfère les données soumises par les appareils vers des rubriques ApsaraMQ for RocketMQ. Ensuite, ApsaraMQ for RocketMQ achemine ces données vers vos serveurs métier. Cette rubrique explique comment configurer le transfert de données.
Prérequis
Vous disposez d'un compte Alibaba Cloud.
-
IoT Platform est activé.
-
ApsaraMQ for RocketMQ est activé.
Si ApsaraMQ for RocketMQ n'est pas activé, accédez à la page produit d'ApsaraMQ for RocketMQ pour activer le service.
-
Un environnement de développement est prêt. Cet exemple utilise un environnement de développement Java composé des éléments suivants.
Système d'exploitation : Windows 10 64 bits
Version du JDK : JDK 8
Environnement de développement intégré (IDE) : IntelliJ IDEA Community Edition
Contexte
Processus de transfert de données

Avantages :
Lorsque vous connectez des appareils à IoT Platform via le protocole MQTT (Message Queuing Telemetry Transport), les liens de transmission des données utilisent le chiffrement TLS (Transport Layer Security) pour empêcher toute altération des données. Pour plus d'informations sur MQTT, consultez les Spécifications du protocole MQTT.
ApsaraMQ for RocketMQ sert de tampon de messages pour réduire les fluctuations de trafic et les charges de travail concurrentes sur vos serveurs métier.
Procédure
-
Connectez-vous à la console IoT Platform et créez un produit ainsi qu'un appareil.
-
Sur la page Overview, cliquez sur All environment. Dans l'onglet All environment, localisez l'instance que vous souhaitez gérer et cliquez sur son ID ou son nom.
Dans cet exemple, la région China (Shanghai) est sélectionnée.
-
Dans le volet de navigation de gauche, choisissez . Sur la page Products, cliquez sur Create Product. Sur la page Create Product, configurez les paramètres et cliquez sur OK.
Dans cet exemple, le paramètre Product Name est défini sur MQ_test et le paramètre Node Type est défini sur Directly Connected Device. Conservez les valeurs par défaut pour les autres paramètres.
-
Cliquez sur View Product Details. Sur la page des détails du produit, choisissez et cliquez sur Edit Topic Category pour créer une catégorie de rubrique utilisée pour soumettre les données de l'appareil.
Dans cet exemple, une catégorie de rubrique nommée /{YourProductKey}/${YourDeviceName}/user/data est créée.
-
Dans le volet de navigation de gauche, choisissez . Sur la page Devices, cliquez sur Add Device pour créer un appareil pour le produit MQ_test.
Dans cet exemple, un appareil nommé MQdevice est créé.
-
-
Dans la console ApsaraMQ for RocketMQ, créez une rubrique et un consommateur.
Connectez-vous à la console ApsaraMQ for RocketMQ.
-
Dans le volet de navigation de gauche, cliquez sur Instances. Sur la page Instances, cliquez sur Create Instance. Dans cet exemple, une instance dont le paramètre Instance Version est défini sur V4.0 et le paramètre Instance Type sur Standard Edition Instance est créée dans la région China (Shanghai).
Pour plus d'informations, consultez la section Créer une instance.
ImportantL'instance ApsaraMQ for RocketMQ doit se trouver dans la même région que l'instance IoT Platform.
Vous ne pouvez transférer des flux de données que vers les rubriques d'une instance ApsaraMQ for RocketMQ V4.x.
Sur la page Instances, localisez l'instance pour laquelle vous souhaitez créer une base de données et cliquez sur son nom.
-
Sur la page Instance Details, cliquez sur Create Group. Dans le panneau Create Group, configurez les paramètres et cliquez sur OK.
Définissez Delivery Order sur Concurrent Delivery et définissez Description sur
IoT device message subscription. -
Cliquez sur Create Topic. Dans le panneau Create Topic, définissez le paramètre Message Type sur Normal Message.
Configurez les paramètres suivants :
Message Type : Normal Message
Description : IoT device reporting data to enterprise server
-
Créez un consommateur et consultez son statut dans la console ApsaraMQ for RocketMQ. Assurez-vous que le consommateur est à l'état Online et que les abonnements des consommateurs du groupe sont cohérents.
Dans cet exemple, un SDK TCP est utilisé pour envoyer et recevoir des messages. Pour savoir comment obtenir et utiliser un SDK TCP, consultez la section Envoyer et s'abonner à des messages normaux avec les SDK client TCP.
Exemple de code Java :
RemarquePour savoir comment afficher un AccessKey ID et un AccessKey secret, consultez la section Créer une paire de clés AccessKey.
Pour plus d'informations sur l'utilisation d'ApsaraMQ for RocketMQ, consultez la documentation ApsaraMQ for RocketMQ.
import com.aliyun.openservices.ons.api.Action; import com.aliyun.openservices.ons.api.ConsumeContext; import com.aliyun.openservices.ons.api.Consumer; import com.aliyun.openservices.ons.api.Message; import com.aliyun.openservices.ons.api.MessageListener; import com.aliyun.openservices.ons.api.ONSFactory; import com.aliyun.openservices.ons.api.PropertyKeyConst; import java.util.Properties; public class ConsumerTest { public static void main(String[] args) { Properties properties = new Properties(); // The ID of the group that you created in the ApsaraMQ for RocketMQ console. properties.put(PropertyKeyConst.GROUP_ID, "XXX"); // The AccessKey ID that you created in the Alibaba Cloud Management Console for identity authentication. properties.put(PropertyKeyConst.AccessKey, "${AccessKey}"); // The AccessKey secret that you created in the Alibaba Cloud Management Console for identity authentication. properties.put(PropertyKeyConst.SecretKey, "${SecretKey}"); // The TCP endpoint. To obtain the TCP endpoint, go to the Basic Information section of the instance details page in the IoT Platform console. properties.put(PropertyKeyConst.NAMESRV_ADDR, "XXX"); // Clustering subscription. This is the default mode. // properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING); // Broadcasting subscription. // properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING); Consumer consumer = ONSFactory.createConsumer(properties); consumer.subscribe("iotx_test_mq", "", new MessageListener() { // Subscribe to multiple tags. public Action consume(Message message, ConsumeContext context) { System.out.println("Receive: " + message); return Action.CommitMessage; } }); consumer.start(); System.out.println("Consumer Started"); } }
-
Dans la console IoT Platform, configurez une règle de transfert de données pour l'instance afin d'acheminer les données de l'appareil vers ApsaraMQ for RocketMQ.
Dans le volet de navigation de gauche, choisissez .
-
Sur la page Data Forwarding, cliquez sur Create Rule.
ImportantSi la page Data Forwarding de la dernière version s'affiche, cliquez sur Back to Previous Version dans le coin supérieur droit de la page. Lorsque la page Data Forwarding de la version précédente s'affiche, cliquez sur Create Rule.
Dans la boîte de dialogue Create Data Forwarding Rule, définissez le paramètre Rule Name sur MQ forwarding et le paramètre Data Type sur JSON. Ensuite, cliquez sur OK.
-
Sur la page des détails de la règle, cliquez sur Write SQL Statement. Dans la boîte de dialogue Write SQL Statement, configurez les paramètres et cliquez sur OK, comme illustré dans la figure suivante.

-
Cliquez sur Add Operation. Dans la boîte de dialogue Add Operation, spécifiez une destination vers laquelle transférer les données et cliquez sur OK.
Configurez les paramètres suivants dans la boîte de dialogue :
Data Destination Name :
ToRocketMQSelect Operation : Send data to ApsaraMQ for RocketMQ
Region : China (Shanghai)
Instance :
IoT-forward-data-test
-
Accédez à la page Data Forwarding. Localisez la règle MQ forwarding et cliquez sur Start dans la colonne Actions.
Une fois la règle activée, IoT Platform transfère les données de l'appareil vers la rubrique ApsaraMQ for RocketMQ.
-
Utilisez un SDK Java pour simuler un appareil, connectez-le à IoT Platform, puis utilisez-le pour soumettre des données.
Démarrez IntelliJ IDEA et importez un exemple de projet nommé JavaLinkKitDemo à partir du package de démonstration.
Spécifiez les informations de certificat de l'appareil MQdevice suivantes dans le fichier
device_id.json: ProductKey, DeviceName et DeviceSecret.-
Modifiez la rubrique MQTT dans le fichier
src\main\java\com.aliyun.alink.devicesdk.demo\MqttSample.javapour correspondre à la rubrique vers laquelle l'appareil soumet les données.Dans cet exemple, la rubrique /{YourProductKey}/${YourDeviceName}/user/data est utilisée.
/** * Example of a publish operation */ public void publish() { MqttPublishRequest request = new MqttPublishRequest(); // Specify a topic based on your business scenario. request.topic = "/" + productKey + "/" + deviceName + "/user/data"; ...... ...... } -
Modifiez le point de terminaison MQTT dans le fichier
src\main\java\com.aliyun.alink.devicesdk.demo\HelloWorld.javapour correspondre au point de terminaison MQTT de votre appareil.Dans cet exemple, le point de terminaison MQTT suivant est utilisé. Pour savoir comment obtenir les points de terminaison MQTT, consultez la section Afficher le point de terminaison d'une instance.
public void init(final DeviceInfoData deviceInfoData) { ...... ...... /** * Configure the parameters for MQTT initialization. */ IoTMqttClientConfig config = new IoTMqttClientConfig(); config.productKey = deviceInfoData.productKey; config.deviceName = deviceInfoData.deviceName; config.deviceSecret = deviceInfoData.deviceSecret; config.channelHost = "iot-06****.mqtt.iothub.aliyuncs.com:1883"; ...... ...... } Exécutez le fichier
src\main\java\com.aliyun.alink.devicesdk.demo\HelloWorld.javapour démarrer l'appareil.
Dans la console IoT Platform, accédez à la page Instance Details de l'instance et choisissez . Vous pouvez consulter les journaux de l'appareil et vérifier si les données de l'appareil sont transférées vers ApsaraMQ for RocketMQ.

-
Consultez les données dans la console ApsaraMQ for RocketMQ.
-
Exécutez le code sur votre serveur local pour vous abonner à la rubrique ApsaraMQ for RocketMQ.

-
Accédez à la page instance details dans la console ApsaraMQ for RocketMQ et cliquez sur Message Query. Sur la page Message Query, recherchez des messages par rubrique ou par ID de message.
Vous pouvez cliquer sur Details pour afficher les détails du message transféré vers ApsaraMQ for RocketMQ, puis télécharger le message.
Exemple de message :
{"deviceName":"MQdevice"}
-