Si un producto genera menos de 1,000 QPS de mensajes de dispositivo y requiere un procesamiento detallado, reenvíe los mensajes desde IoT Platform hacia Simple Message Queue (anteriormente MNS) (SMQ) para su consumo. Al configurar una suscripción del lado del servidor para un producto y un tipo de mensaje, se crea automáticamente una cola de SMQ. Su cliente de SMQ escucha dicha cola para recibir los mensajes del dispositivo.
Requisitos previos
Contexto
Alibaba Cloud Simple Message Queue (anteriormente MNS) (SMQ) es un servicio de mensajería distribuida. SMQ permite la transferencia de datos y la entrega de notificaciones entre componentes de aplicaciones distribuidas.
IoT Platform utiliza el modelo de mensajería basado en colas de SMQ para recibir mensajes de dispositivos. Queue-based messaging model features y Basic concepts of the queue-based messaging model.
|
Término |
Descripción |
|
Suscripción del lado del servidor de MNS |
Configure una suscripción del lado del servidor para un producto y un tipo de mensaje en IoT Platform con el fin de crear automáticamente una cola de SMQ. |
|
Cliente de MNS |
Consumidor que utiliza el SDK en la nube de SMQ en su servidor empresarial para recibir mensajes de dispositivos. Guía para desarrolladores del SDK en la nube de SMQ: SDK download and usage. |
|
Tipo de mensaje |
Categoría de mensajes clasificados por tema del dispositivo. Tras suscribirse a un tipo de mensaje, solo los mensajes de dispositivo correspondientes a los temas asociados bajo ese tipo pueden reenviarse al cliente de MNS. Los temas de dispositivo para cada tipo de mensaje se enumeran en la tabla Temas de tipos de mensaje que aparece a continuación. |
IoT Platform ofrece suscripciones del lado del servidor y reenvío de datos. Ambas funciones reenvían mensajes de dispositivos a un cliente de SMQ para su consumo. El reenvío de datos le permite especificar temas de dispositivo y procesar la información antes de reenviarla. Comparison of data forwarding solutions. Para configurar el reenvío de datos, consulte: Add a data source to forward data y Forward data to Message Service (MNS).
Límites
Las suscripciones del lado del servidor de MNS no son compatibles con instancias Enterprise en las regiones China (Beijing), China (Shenzhen), Singapore, Japan (Tokyo), US (Virginia), US (Silicon Valley) ni Germany (Frankfurt).
Solo se permite una suscripción a cola de SMQ por producto. Los mensajes que excedan el límite de suscripción del lado del servidor de MNS no se reenvían. Límites relacionados con colas: Limits.
Después de crear una suscripción del lado del servidor de MNS, SMQ cobra una tarifa por uso de recursos de cola, incluso si no se reenvían mensajes a dicha cola.
Cada mensaje recibido por una cola de SMQ no puede superar los 64 KB. Los mensajes que excedan este tamaño se descartan.
Facturación
La cantidad de mensajes de dispositivo que puede reenviar a SMQ depende de la especificación disponible de Message Forwarding TPS de la instancia del dispositivo. En instancias públicas, el valor de Message Forwarding TPS es fijo (5 mensajes/segundo) y no tiene costo. En instancias Enterprise, la especificación de Message Forwarding TPS se factura mediante suscripción. La capacidad disponible depende de la especificación de Message Forwarding TPS adquirida para la instancia. Billing overview.
SMQ cobra una tarifa por la recepción de mensajes. Billing.
Crear una suscripción del lado del servidor
Al crear una suscripción del lado del servidor de MNS para un producto y un tipo de mensaje en IoT Platform, se genera automáticamente una cola de mensajes en la misma región dentro de SMQ bajo su cuenta. Una aplicación que utilice el SDK en la nube de SMQ puede escuchar esta cola para recibir los mensajes de dispositivo suscritos.
Inicie sesión en la consola de IoT Platform.
En la página Overview, haga clic en All environment. En la pestaña All environment, localice la instancia que desea gestionar y haga clic en su ID o nombre.
En el panel de navegación izquierdo, seleccione .
En la página Server-side Subscription, dentro de la pestaña Subscription List, haga clic en Create Subscription.
-
En el cuadro de diálogo Create Subscription, configure los parámetros y haga clic en OK.
Parámetro
Descripción
Product
Seleccione el producto cuyos dispositivos desea suscribir.
Subscription Type
Seleccione MNS.
Authorization
Haga clic en Authorize y luego active SMQ; conceda los permisos según las indicaciones.
NotaSi ya activó SMQ y otorgó los permisos correspondientes, omita este paso.
Authorize Now
Haga clic en Authorize Now y después en Agree to Authorization. El sistema crea el rol AliyunIOTAccessingMNSRole para otorgar a IoT Platform los permisos necesarios para acceder a SMQ y reenviar mensajes hacia SMQ.
NotaSi el rol AliyunIOTAccessingMNSRole ya fue creado, omita este paso.
Message Type to Push
Seleccione los tipos de mensaje a los que desea suscribirse:
ImportantePara productos y dispositivos bajo una puerta de enlace en la nube, solo pueden enviarse datos de Device-reported messages, Device status change notifications y Device lifecycle changes. Temas y formatos de datos para el reenvío de mensajes: Message communication over MQTT, Message forwarding over GB/T 32960, Message forwarding over JT/T 808.
-
Device-reported messages: Mensajes provenientes de temas cuyo Operation Permission está definido como Publish en la lista de temas de todos los dispositivos bajo el producto.
Los mensajes reportados por el dispositivo incluyen datos personalizados y datos del modelo Thing Specification Language (TSL) (propiedades reportadas, eventos reportados, respuestas a configuración de propiedades y respuestas a invocaciones de servicios). Los datos del modelo TSL enviados al lado del servidor son procesados por IoT Platform. Formato de datos: Data format.
Por ejemplo, suponga que un producto tiene tres categorías de temas:
-
/${productKey}/${deviceName}/user/get, que cuenta con permiso de suscripción. -
/${productKey}/${deviceName}/user/update, que cuenta con permiso de publicación. -
/${productKey}/${deviceName}/thing/event/property/post, que cuenta con permiso de publicación.
En este caso, la suscripción del lado del servidor reenviará mensajes de las categorías de temas con permiso de publicación, es decir:
/${productKey}/${deviceName}/user/updatey/${productKey}/${deviceName}/thing/event/property/post. -
-
Device status change notifications: Mensajes generados cuando cambia el estado en línea o fuera de línea de un dispositivo perteneciente al producto.
-
Sub-device discovery reports from gateway: La puerta de enlace reporta información sobre subdispositivos descubiertos a IoT Platform. Esto requiere soporte por parte de la aplicación en la puerta de enlace. Este tipo de mensaje es exclusivo de productos de puerta de enlace.
-
Device topology changes: Mensajes relacionados con la creación y eliminación de la topología entre un subdispositivo y una puerta de enlace. Este tipo de mensaje es exclusivo de productos de puerta de enlace.
-
Device lifecycle changes: Mensajes sobre la creación, eliminación, deshabilitación y habilitación de dispositivos.
-
TSL model historical data reports: Datos históricos de propiedades y eventos reportados por el dispositivo.
-
OTA update status notifications: Notificaciones de eventos sobre actualizaciones exitosas o fallidas durante la verificación de paquetes de actualización y actualizaciones OTA masivas.
Tabla 1. Descripción de parámetros
Tipo de mensaje
Descripción del tema
Referencias
Device-reported messages: Tema personalizado
Un tema personalizado cuyo Operation Permission sea Publish. El tema para reenviar mensajes en formato de datos personalizado coincide con el tema personalizado original.
Device-reported messages: Datos del modelo TSL
Los temas de reenvío de mensajes incluyen los siguientes:
-
Tema para reportar propiedades del dispositivo:
/${productKey}/${deviceName}/thing/event/property/post. -
Tema para reportar eventos del dispositivo:
/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post. -
Tema para reportar propiedades del dispositivo en lote:
/${productKey}/${deviceName}/thing/property/batch/post. -
Tema para reportar eventos del dispositivo en lote:
/${productKey}/${deviceName}/thing/event/batch/post. -
Tema para devolver respuesta a un comando desde la nube:
/${productKey}/${deviceName}/thing/downlink/reply/message.
Los temas correspondientes para datos sin procesar reportados por el dispositivo son los siguientes:
-
Tema para reportar propiedades del dispositivo:
/sys/${productKey}/${deviceName}/thing/event/property/post. -
Temas para reportar eventos del dispositivo:
/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post,/sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:{tsl.event.identifier}/post. -
Tema para reportar propiedades y eventos del dispositivo en lote:
/sys/${productKey}/${deviceName}/thing/event/property/batch/post. -
Tema para devolver respuesta a un comando desde la nube:
/sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}_reply
Device status change notifications
IoT Platform reenvía directamente mensajes sobre cambios de estado en línea/fuera de línea del dispositivo. El tema es
/as/mqtt/status/${productKey}/${deviceName}.Sub-device discovery reports from gateway
Tema específico para dispositivos de puerta de enlace:
/${productKey}/${deviceName}/thing/list/found. La puerta de enlace reporta información sobre subdispositivos descubiertos a IoT Platform y dicha información se reenvía posteriormente.Device topology changes
Tema específico para dispositivos de puerta de enlace:
/${productKey}/${deviceName}/thing/topo/lifecycle. Se utiliza para reenviar mensajes sobre la creación y eliminación de la topología entre un subdispositivo y una puerta de enlace.El tema correspondiente para datos sin procesar reportados por el dispositivo:
/sys/${productKey}/${deviceName}/thing/topo/change.Device lifecycle changes
IoT Platform reenvía directamente mensajes sobre creación, eliminación, deshabilitación y habilitación de dispositivos. El tema es
/${productKey}/${deviceName}/thing/lifecycle.TSL model historical data reports
Los temas de reenvío de mensajes incluyen los siguientes:
-
Tema para reportar datos históricos de propiedades:
/${productKey}/${deviceName}/thing/event/property/history/post. -
Tema para reportar datos históricos de eventos:
/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/history/post.
El tema para reportar datos históricos del modelo TSL:
/sys/${productKey}/${deviceName}/thing/event/property/history/post.OTA update status notifications
Los temas de reenvío de mensajes incluyen los siguientes:
-
Tema para reportar resultados de actualización OTA:
/${productKey}/${deviceName}/ota/upgrade. -
Tema para reportar progreso de actualización OTA:
/${productKey}/${deviceName}/ota/progress/post.
El tema para reportar progreso de actualización:
/ota/device/progress/${productKey}/${deviceName}. -
-
En el cuadro de diálogo de confirmación que aparece, haga clic en OK.
Se crea automáticamente una cola en SMQ dentro de SMQ. El nombre de la cola sigue el formato
aliyun-iot-${productKey}, por ejemplo:aliyun-iot-ws4******.NotaEliminar una suscripción del lado del servidor de MNS en IoT Platform también elimina automáticamente la cola correspondiente de SMQ en SMQ.
Desarrollar un cliente consumidor
Tras configurar una suscripción del lado del servidor de MNS, utilice el SDK en la nube de SMQ en su servidor empresarial para escuchar la cola de SMQ y recibir los mensajes de dispositivo suscritos. Esto permite que su aplicación en la nube de SMQ reciba mensajes de dispositivos provenientes de IoT Platform.
IoT Platform recomienda usar el ejemplo ConsumerDemo del modelo de mensajería basado en colas incluido en el SDK de Java de SMQ para escuchar la cola de SMQ creada, por ejemplo: aliyun-iot-ws4******.
Descargue el paquete de ejemplos más reciente desde Java SDK release notes. ConsumerDemo in the Queue User Guide.
En el archivo ConsumerDemo, configure el nombre de la cola de SMQ que IoT Platform creó automáticamente, por ejemplo: aliyun-iot-ws4******.
CloudQueue queue = client.getQueueRef("aliyun-iot-ws4******");
Formato de datos de los mensajes recibidos
Una vez que un dispositivo se conecta a IoT Platform y envía mensajes, el cliente de SMQ recibe los mensajes con el siguiente formato. Desarrollo del lado del dispositivo: Connect a device using a device SDK.
{
"messageid":" ",
"messagetype":"upload",
"topic":"/al12345****/device123/user/update",
"payload":" ",
"timestamp": " "
}
|
Parámetro |
Descripción |
|
messageid |
ID del mensaje generado por IoT Platform. |
|
messagetype |
Tipo de mensaje. Valores válidos:
|
|
topic |
Tema de IoT Platform al que escucha el servidor. Los temas se listan en la tabla Descripciones de temas dentro de la sección Crear una suscripción del lado del servidor. |
|
payload |
Datos del mensaje codificados en Base64. Formato de datos de tema y carga útil para mensajes reenviados a Simple Message Queue (anteriormente MNS): Data format. |
|
timestamp |
Marca de tiempo en formato Epoch. |
Referencias
Verifique los recursos disponibles de Message Forwarding TPS en la página de detalles de la instancia para asegurar que los mensajes del dispositivo puedan reenviarse a SMQ para su consumo. View available resources of an instance. Si los recursos son insuficientes, actualice la instancia. Upgrade a billable instance.
Revise los conteos de mensajes recibidos en View queue metrics.
Envíe registros de operaciones de mensajes a Simple Log Service mediante la función Log Management. Para diagnosticar excepciones en la confirmación de mensajes, use el MessageId con el fin de consultar trazas de mensajes. Push logs to Simple Log Service y View logs in Simple Log Service.
Tutorial sobre cómo recibir mensajes de cambio de estado del dispositivo escuchando una cola de SMQ: Server-side subscription (MNS) example.
SMQ proporciona SDK en varios lenguajes (Python, C#, PHP) para escuchar colas de SMQ. SDK download and usage.