Servicio de mensajes: por cierto, una breve introducción a Pulsar

Serie de artículos de prefacio >>>

Conjunto de instrucciones estándar

La plataforma de mensajería abierta impulsa principalmente de forma activa varios datos de eventos a socios externos a través de Pulsar para cumplir con los requisitos de los socios de tiempo real y persistencia de mensajes.

Uno, Pulsar

Para la introducción de Pulsar, puede echar un vistazo a la breve introducción >>> pulsar-introducción . En pocas palabras, Pulsar fue desarrollado originalmente por Yahoo y ahora está administrado por Apache Software Foundation. Es una solución que admite mensajería de servidor a servidor de alto rendimiento y multiinquilino.

Tuya Smart se ha personalizado y mejorado en base al sistema Pulsar de código abierto. El acceso a los mensajes se puede completar de acuerdo con el SDK Pulsar proporcionado por Tuya Smart.

Pulsar utiliza el patrón de diseño Pub / Sub (publicar y suscribirse) como agente de mensajes. En este patrón de diseño, los productores publican mensajes sobre temas y luego los consumidores pueden suscribirse a estos temas, procesar los mensajes entrantes y enviar confirmaciones cuando se completa el procesamiento. Cuando se crea la suscripción (incluso si el dispositivo de procesamiento de mensajes está desconectado), todos los mensajes serán retenidos por Pulsar. Solo después de que el dispositivo de procesamiento de mensajes confirme que el mensaje se procesó con éxito, el mensaje retenido se descartará.

Además, varios consumidores pueden suscribir un tema y, cuando el consumidor procesa correctamente el mensaje, debe enviar una confirmación al agente para que este pueda descartar el mensaje. El distribuidor de mensajes Pulsar de Tuya Smart (Broker) asigna múltiples particiones para cada tema, y ​​el distribuidor de mensajes Pulsar distribuirá los mensajes según las particiones y los consumidores.

2. Descripción relacionada

La seguridad:

  • Seguridad de autenticación: el sistema de mensajería Pulsar de Tuya Smart está profundamente personalizado para que la autenticación de identidad cumpla con los requisitos de alta seguridad. Tuya Smart utiliza un mecanismo de token dinámico para mejorar la seguridad. Los desarrolladores pueden ignorar los detalles de implementación y completar la autenticación basada en el SDK proporcionado por Tuya Smart.
  • Seguridad de datos:
    | - Seguridad de transmisión: El sistema de envío de mensajes Tuya Smart Pulsar transmite datos basados ​​en SSL.
    | - Seguridad empresarial: los datos empresariales están cifrados con AES-128 y todas las solicitudes están firmadas.
    Método de solicitud:

Consulte el código ConsumerExample para obtener más detalles. Se deben proporcionar las siguientes tres partes de datos al acceder:

  • nombre de usuario: Complete el ID de acceso de la clave de autorización de API en la plataforma de desarrollo en la nube.
  • contraseña: Complete el secreto de acceso de la clave de autorización de la API en la plataforma de desarrollo en la nube.
  • url: Elija según el área de llamada.
    Área de China: pulsar + ssl: //mqe.tuyacn.com: 7285 /
    Área de EE . UU .: pulsar + ssl: //mqe.tuyaus.com: 7285 /
    Área de Europa: pulsar + ssl: //mqe.tuyaeu.com: 7285 /
    India: pulsar + ssl: //mqe.tuyain.com: 7285 / Cómo

    abrir:
    1. Inicie sesión en IoT Workbench > Desarrollo en la nube.
  1. Crea el proyecto.

  2. En el módulo de suscripción de mensajes del proyecto, abra la función de suscripción de mensajes.

Ejemplo de código:

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();

Formato de datos:

Servicio de mensajes: por cierto, una breve introducción a Pulsar

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

Firma de datos:

Antes de obtener los datos reales, puede configurar la verificación de firma MD5 a prueba de manipulaciones. Los pasos de ejecución del algoritmo de firma son los siguientes:

  1. Formatee cada parámetro en el formato JSON recibido (excepto el signo y el valor vacío) como clave = val.
  2. Ensamblar (usar la clave en orden ascendente). Ejemplo del formato de cadena ensamblada: k1 = v1 || k2 = v2.
  3. Agrega la clave. Por ejemplo: k1 = v1 || k2 = v2 ... kn = vn || clave.
  4. Firma MD5 de toda la cadena.
  5. Si el valor MD5 es consistente con el signo de los datos recibidos, indica que los datos no han sido manipulados; de lo contrario, se considera manipulado.

Una vez pasada la verificación de la firma, descifre los datos:

  1. Primero realice la decodificación Base64 en los datos.
  2. Descifre el código central de 16 bits de la clave de acceso a través de AES (modo ECB) para obtener los datos reales del estado del dispositivo.

El formato de datos después del descifrado es el siguiente:

{
    "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.

Número de protocolo de datos comerciales : número de protocolo (diferentes números de protocolo representan diferentes funciones).

Servicio de mensajes: por cierto, una breve introducción a Pulsar

Evento de informe de datos del dispositivo:

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

Otros eventos:

Servicio de mensajes: por cierto, una breve introducción a Pulsar
Ejemplo de datos


{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "online",
  "bizData": {
    "time": 146052438362
  }
}
  • Dispositivo fuera de línea:
    descripción de bizData

Servicio de mensajes: por cierto, una breve introducción a Pulsar
Ejemplo de datos

  {
    "devId": "002dj00118fe34d9****",
    "productKey": "开发者平台定义产品对应的产品 Key",
    "bizCode": "offline",
    "bizData": {
      "time": 146052438362
    }
  }
  • Cambio de nombre de dispositivo
    descripción de bizData

Servicio de mensajes: por cierto, una breve introducción a Pulsar

Ejemplo de datos

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "nameUpdate",
  "bizData": {
    "devId": "002dj00118fe34d9****",
    "name": "new name"
  }
}
  • Cambio de nombre del dispositivo DP
    descripción de bizData

Servicio de mensajes: por cierto, una breve introducción a Pulsar
Ejemplo de datos

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "dpNameUpdate",
  "bizData": {
    "devId": "002dj00118fe34d9****",
    "name": "new name",
    "dpId": "dpId"
  }
}

  • Enlace de dispositivo descripción de bizData

Servicio de mensajes: por cierto, una breve introducción a Pulsar
Ejemplo de datos

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


Instrucciones de bizData para la eliminación del dispositivo

Servicio de mensajes: por cierto, una breve introducción a Pulsar

Ejemplo de datos

{
  "devId": "002dj00118fe34d9****",
  "productKey": "开发者平台定义产品对应的产品 Key",
  "bizCode": "delete",
  "bizData": {
    "devId": "002dj00118fe34d9****",
    "uid":"ay1529485403390S****"
  }
}
  • Estado de actualización del dispositivo
    descripción de bizData

Servicio de mensajes: por cierto, una breve introducción a Pulsar
Ejemplo de datos

{
    "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
}

Supongo que te gusta

Origin blog.51cto.com/14985709/2552305
Recomendado
Clasificación