Service de messagerie - en passant, une brève introduction à Pulsar

Préface série d'articles >>>

Jeu d'instructions standard

La plate-forme de messagerie ouverte pousse principalement diverses données d'événements vers des partenaires externes via Pulsar pour répondre aux exigences des partenaires en temps réel et en persistance des messages.

Un, Pulsar

Pour l'introduction de Pulsar, vous pouvez consulter la brève introduction >>> pulsar-introduction . En termes simples, Pulsar a été développé à l'origine par Yahoo et est maintenant géré par Apache Software Foundation. C'est une solution qui prend en charge la messagerie multi-locataires de serveur à serveur haute performance.

Tuya Smart a été personnalisé et amélioré sur la base du système open source Pulsar.L'accès aux messages peut être complété selon le SDK Pulsar fourni par Tuya Smart.

Pulsar utilise le modèle de conception Pub / Sub (publication et abonnement) comme courtier de messages. Dans ce modèle de conception, les producteurs publient des messages dans des rubriques, puis les consommateurs peuvent s'abonner à ces rubriques, traiter les messages entrants et envoyer des confirmations une fois le traitement terminé. Lorsque l'abonnement est créé (même si le dispositif de traitement des messages est déconnecté), tous les messages seront conservés par Pulsar. Ce n'est qu'après que le dispositif de traitement des messages a confirmé que le message a été traité avec succès, le message conservé sera rejeté.

En outre, une rubrique peut être abonnée par plusieurs consommateurs, et lorsque le consommateur traite avec succès le message, il doit envoyer une confirmation à l'agent afin que l'agent puisse ignorer le message. Le distributeur de messages Pulsar de Tuya Smart (Broker) alloue plusieurs partitions pour chaque sujet, et le distributeur de messages Pulsar distribuera les messages en fonction des partitions et des consommateurs.

2. Description connexe

Sécurité:

  • Sécurité d'authentification: le système de messagerie Pulsar de Tuya Smart est profondément personnalisé pour l'authentification d'identité afin de répondre à des exigences de sécurité élevées. Tuya Smart utilise un mécanisme de jeton dynamique pour améliorer la sécurité. Les développeurs peuvent ignorer les détails d'implémentation et une authentification complète basée sur le SDK fourni par Tuya Smart.
  • Sécurité des données:
    | - Sécurité de la transmission: le système push de message Tuya Smart Pulsar transmet les données en utilisant SSL.
    | - Sécurité de l'entreprise: les données d'entreprise sont cryptées avec AES-128 et toutes les demandes sont signées.
    Méthode de demande:

Reportez-vous au code ConsumerExample pour plus de détails. Les trois parties de données suivantes doivent être fournies lors de l'accès:

  • nom d'utilisateur: indiquez l'ID d'accès de la clé d'autorisation d'API dans la plateforme de développement cloud.
  • mot de passe: indiquez le secret d'accès de la clé d'autorisation API dans la plateforme de développement cloud.
  • url: choisissez en fonction de la zone d'appel.
    Zone Chine: pulsar + ssl: //mqe.tuyacn.com: 7285 /
    Zone US: pulsar + ssl: //mqe.tuyaus.com: 7285 /
    Zone Europe: pulsar + ssl: //mqe.tuyaeu.com: 7285 /
    Inde: pulsar + ssl: //mqe.tuyain.com: 7285 / Comment

    ouvrir:
    1. Connectez-vous à IoT Workbench > Développement cloud.
  1. Créez le projet.

  2. Dans le module d'abonnement aux messages du projet, ouvrez la fonction d'abonnement aux messages.

Exemple de code:

String url = "";
String accessId = "";
String accessKey = "";
MqConsumer mqConsumer = MqConsumer.build()
    .serviceUrl(url)
    .accessId(accessId)
    .accessKey(accessKey)
    .maxRedeliverCount(3)
    .messageListener(new MqConsumer.IMessageListener() {
     @Override
     public void onMessageArrived(Message message) throws Exception {
       //write your own message processing logic
     }
    });
mqConsumer.start();

Format de données:

Service de messagerie - en passant, une brève introduction à Pulsar

{
   "protocol": 4,
   "pv": "2.0",
   "t": 146052438362,
"data":"4FDEE3FE59FCD76E260F7115011D65C7FD2AF59BFA4DC29E5DDF3FDA6BD5447E02F679052C34BBAAB7BB0EFEED62C760FD2AF59BFA4DC29E5DDF3FDA6BD5447EC660C816075824E004EC0123DE4FD1B638BB633A478EB2C2004EF4289276****",
   "sign": "58285279b5b5790c7d917de88b3e****"
}

Signature des données:

Avant d'obtenir les données réelles, vous pouvez configurer une vérification de signature MD5 inviolable. Les étapes d'exécution de l'algorithme de signature sont les suivantes:

  1. Mettez en forme chaque paramètre au format JSON reçu (à l'exception du signe et de la valeur vide) comme clé = val.
  2. Assemblez (utilisez la clé dans l'ordre croissant). Exemple de format de chaîne assemblé: k1 = v1 || k2 = v2.
  3. Ajoutez la clé. Par exemple: k1 = v1 || k2 = v2 ... kn = vn || clé.
  4. Signature MD5 de la chaîne entière.
  5. Si la valeur MD5 est cohérente avec le signe des données reçues, cela indique que les données n'ont pas été falsifiées; sinon, elles sont considérées comme falsifiées.

Une fois la vérification de la signature réussie, décryptez les données:

  1. Effectuez d'abord le décodage Base64 sur les données.
  2. Décryptez le code 16 bits du milieu de la clé d'accès via AES (mode ECB) pour obtenir les données d'état réel de l'appareil.

Le format des données après le décryptage est le suivant:

{
    "devId": "002dj00118fe34d9****",
    "productKey": "开发者平台定义产品对应的产品 Key",
    "dataId":"1459168450ddfdfoiopiopi****",//全局唯一 ID, 数据上报唯一标识 ID
    "status": [
    {
      "code":"switch",
      "value":false,
      "mode":"rw",
      "t":146052438362
    },
    {
      "code":"work_mode",
      "value":"colour",
      "mode":"rw",
      "t":146052438362
    }
  ]
}


3.

Numéro de protocole de données commerciales : numéro de protocole (différents numéros de protocole représentent différentes fonctions).

Service de messagerie - en passant, une brève introduction à Pulsar

Événement de rapport de données de l'appareil:

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "dataId": "1459168450ddfdfoiopiopi****",
  "status": [
    {
      "数据点编码1(产品定义时对应的数据点编码)": "数据点对应的值",
      "t": 1540615024283  // 数据点状态发生时间
    },
    {
      "数据点编码2(产品定义时对应的数据点编码)": "数据点对应的值",
      "t": 1540615024283 // 数据点状态发生时间
    }
  ]
}

D'autres évènements:

Service de messagerie - en passant, une brève introduction à Pulsar
Exemple de données


{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "online",
  "bizData": {
    "time": 146052438362
  }
}
  • Périphérique hors ligne:
    description bizData

Service de messagerie - en passant, une brève introduction à Pulsar
Exemple de données

  {
    "devId": "002dj00118fe34d9****",
    "productKey": "开发者平台定义产品对应的产品 Key",
    "bizCode": "offline",
    "bizData": {
      "time": 146052438362
    }
  }
  • Changement de nom de périphérique
    Description bizData

Service de messagerie - en passant, une brève introduction à Pulsar

Exemple de données

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "nameUpdate",
  "bizData": {
    "devId": "002dj00118fe34d9****",
    "name": "new name"
  }
}
  • Modification du nom DP du périphérique
    Description bizData

Service de messagerie - en passant, une brève introduction à Pulsar
Exemple de données

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "dpNameUpdate",
  "bizData": {
    "devId": "002dj00118fe34d9****",
    "name": "new name",
    "dpId": "dpId"
  }
}
  • Liaison de
    périphérique Description bizData

Service de messagerie - en passant, une brève introduction à Pulsar
Exemple de données

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "bindUser",
  "bizData": {
    "devId": "002dj00118fe34d9****",
    "uuid": "06200043b4e618c1****",
    "uid":"ay1529485403390****",
    "token": "IIpQ****"
  }
}


Instructions de retrait de périphérique bizData

Service de messagerie - en passant, une brève introduction à Pulsar

Exemple de données

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "delete",
  "bizData": {
    "devId": "002dj00118fe34d9****",
    "uid":"ay1529485403390S****"
  }
}
  • État de la mise à niveau du périphérique
    Description bizData

Service de messagerie - en passant, une brève introduction à Pulsar
Exemple de données

{
    "bizCode":"upgradeStatus",
    "bizData": {
        "devId":"6ca8756d*****1b4ewsdn",  
        "moduleType":0,
        "upgradeStatus":2,
        "description":"升级测试",
        "oldVersion": "1.0.1",
        "newVersion": "1.0.2"         
    },
    "devId":"6ca8756d*****1b4ewsdn",
    "productKey":"vFHpaEFwu8UD****",
    "ts":1562232522192
}

Je suppose que tu aimes

Origine blog.51cto.com/14985709/2552305
conseillé
Classement