Todos los productos
Search
Centro de documentos

IoT Platform:Suscripción del lado del servidor (MNS)

Última actualización: Sep 04, 2026

Este tema describe cómo configurar una suscripción del lado del servidor para enviar notificaciones de cambio de estado del dispositivo correspondientes a un producto a una cola de Simple Message Queue (formerly MNS) (SMQ). Su servidor puede recibir estas notificaciones al escuchar la cola de MNS.

Requisitos previos

  • Asegúrese de que los siguientes servicios de Alibaba Cloud estén activados:

  • Prepare un entorno de desarrollo. Este ejemplo utiliza el siguiente entorno de desarrollo Java:

Configurar una suscripción del lado del servidor

En la consola de IoT Platform, cree una suscripción del lado del servidor para MNS y seleccione los tipos de mensajes a los que desea suscribirse.

  1. Inicie sesión en la consola de IoT Platform.

  2. En la página Overview, busque la instancia que desea gestionar y haga clic en el ID o nombre de la instancia.

  3. En el panel de navegación izquierdo, elija Devices > Products. A continuación, haga clic en Create Product para crear un producto de detector de gas.

  4. Elija Devices > Add Device para crear un dispositivo bajo el producto de detector de gas.

    El certificado del dispositivo es obligatorio cuando configura el SDK del lado del dispositivo.

  5. En el panel de navegación izquierdo, elija Rules Engine > Server-side Subscription. Luego, haga clic en Create Subscription para crear una suscripción del lado del servidor para MNS. Para obtener más información, consulte Use server-side subscriptions for MNS.

    Nota

    Cuando configure el reenvío de mensajes a MNS por primera vez, debe hacer clic en Authorize en el mensaje emergente. Posteriormente, se le redirigirá a la consola de RAM para otorgar a IoT Platform acceso a MNS.

    En este ejemplo, seleccione Device Status Change Notification como tipo de mensaje. Esto garantiza que todas las notificaciones de cambio de estado del dispositivo correspondientes al producto se envíen a la cola de MNS.

    Una vez creada la suscripción, IoT Platform crea automáticamente una cola en MNS para recibir mensajes. El nombre de la cola tiene el formato aliyun-iot-${yourProductKey}. Debe utilizar este nombre de cola cuando configure el SDK de MNS para escuchar mensajes.

    En la lista de suscripciones, haga clic en el icono junto a MNS para consultar el nombre de la cola de MNS.

Configurar el SDK de MNS del lado del servidor

Este ejemplo utiliza la demostración del SDK de MNS para Java.

  1. Vaya a MNS SDK for Java release notes, descargue el paquete de ejemplo y descomprímalo.

    Este ejemplo utiliza el paquete de ejemplo aliyun-sdk-mns-samples-1.1.9.1.zip.

  2. En IntelliJ IDEA, importe la carpeta aliyun-sdk-mns-samples-1.1.9.1 como proyecto.

  3. En su directorio local, ubicado en C:\Users\${YourComputerUserName}, cree un archivo de propiedades llamado .aliyun-mns.properties. En este archivo, agregue sus credenciales de autenticación de MNS con el siguiente formato:

    Nota

    El directorio principal en Linux es /home/YOURNAME/. El directorio principal en Windows es C:\Users\YOURNAME.

    mns.accountendpoint=http://${your_accountId}.mns.${your_regionId}.aliyuncs.com
    mns.accesskeyid=${your_accesskeyid}
    mns.accesskeysecret=${your_accesskeysecret}

    Parámetro

    Descripción

    accountendpoint

    El endpoint de su servicio MNS. Puede encontrarlo en la consola de Message Service (MNS). Seleccione la región donde se encuentra su cola y haga clic en Details para la cola.

    accesskeyid

    El AccessKey ID y el AccessKey secret de su cuenta de Alibaba Cloud.

    Inicie sesión en la consola de IoT Platform, pase el puntero sobre la imagen de perfil y luego haga clic en AccessKey Management para obtener el AccessKey ID y el AccessKey secret.

    accesskeysecret

  4. En el archivo ComsumerDemo.java, ubicado en el directorio src\main\java\com.aliyun.mns.sample.Queue, especifique el nombre de la cola de Simple Message Queue (formerly MNS) creada automáticamente por IoT Platform.

        public static void main(String[] args) {
            CloudAccount account = new CloudAccount(
                    ServiceSettings.getMNSAccessKeyId(),
                    ServiceSettings.getMNSAccessKeySecret(),
                    ServiceSettings.getMNSAccountEndpoint());
            MNSClient client = account.getMNSClient(); // Initialize the client.
            // Consume messages.
            try{
                CloudQueue queue = client.getQueueRef("aliyun-iot-a1eN7La****");// Replace this with the queue name automatically created by IoT Platform.
                for (int i = 0; i < 10; i++)
                {
                    Message popMsg = queue.popMessage(); // Pop a message from the queue.
                    if (popMsg != null){
                        System.out.println("message handle: " + popMsg.getReceiptHandle());
                        System.out.println("message body: " + popMsg.getMessageBodyAsString()); // Get the raw message body.
                        System.out.println("message id: " + popMsg.getMessageId());
                        System.out.println("message dequeue count:" + popMsg.getDequeueCount());
                        // Add your message processing logic here.
                        // Delete the message from the queue.
                        queue.deleteMessage(popMsg.getReceiptHandle());
                        System.out.println("delete message successfully.\n");
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
  5. Ejecute el archivo ComsumerDemo.java.

Configurar el SDK del lado del dispositivo

  1. Vaya a Link SDK y seleccione SDK for Java.

  2. Descargar la demostración de Link SDK for Java y descomprima el paquete.

    Nota

    Al descargar esta demostración, usted acepta el Acuerdo de licencia de software.

  3. En IntelliJ IDEA, importe el proyecto JavaLinkKitDemo.

  4. En el archivo device_id, introduzca la información del certificado de su dispositivo.

    {
      "productKey": "xxx",
      "deviceName": "Esensor",
      "productSecret": "",
      "deviceSecret": "1xxx?2"
    }
  5. En el archivo MqttSample.java, ubicado en el directorio src\main\java\com.aliyun.alink.devicesdk.demo, establezca el tema de publicación en el tema de su dispositivo.

    public class MqttSample extends BaseSample {
        final static String TAG = "MqttSample";
        public MqttSample(String pk, String dn) { super(pk, dn); }
        /**
         * An example of the publishing API.
         */
        public void publish() {
            MqttPublishRequest request = new MqttPublishRequest();
            // Specify the topic based on your use case.
            request.topic = "/sys/" + productKey + "/" + deviceName + "/thing/deviceinfo/update";
        }
    }
  6. En el archivo HelloWorld.java, ubicado en el directorio src\main\java\com.aliyun.alink.devicesdk.demo, introduzca la información de conexión del dispositivo.

    Para obtener la información de conexión del dispositivo, consulte View and configure instance endpoints. El formato de channelHost es {productKey}.iot-as-mqtt.{region}.aliyuncs.com:1883. Código de ejemplo:

    public void init(final DeviceInfoData deviceInfoData) {
        this.pk = deviceInfoData.productKey;
        this.dn = deviceInfoData.deviceName;
        LinkKitInitParams params = new LinkKitInitParams();
        /**
         * Set MQTT initialization parameters.
         */
        IoTMqttClientConfig config = new IoTMqttClientConfig();
        config.productKey = deviceInfoData.productKey;
        config.deviceName = deviceInfoData.deviceName;
        config.deviceSecret = deviceInfoData.deviceSecret;
        config.channelHost = pk + ".iot-as-mqtt." + deviceInfoData.region + ".aliyuncs.com:1883";
        /**
         * Specifies whether to receive offline messages.
         * This corresponds to the cleanSession field in MQTT.
         */
        // ...
    }
  7. Ejecute el archivo HelloWorld.java para conectar el dispositivo.

Comprobar los resultados

Después de ejecutar el SDK del lado del dispositivo, la notificación de dispositivo en línea se envía a la cola de Simple Message Queue (formerly MNS) mediante la suscripción del lado del servidor. Posteriormente, el SDK de Simple Message Queue (formerly MNS) consume el mensaje de la cola y lo elimina.

El siguiente ejemplo muestra la salida cuando el SDK de Simple Message Queue (formerly MNS) recibe y elimina correctamente un mensaje.

message handle: 519xxx...AgMA==
message body:
  {"payload":"eyJsYXN0xxx...IiwiY2xpZW5xxx...","topic":"/as/mqtt/status/xxx/device1","messageid":15xxx,"timestamp":1661158432}
message id: 51xxx...C49
message dequeue count:1
delete message successfully.