O IoT Platform encaminha os dados enviados pelos dispositivos para tópicos do ApsaraMQ for RocketMQ. Em seguida, o ApsaraMQ for RocketMQ envia esses dados para seus servidores de negócios. Este tópico descreve como configurar esse encaminhamento.
Pré-requisitos
Você criou uma conta Alibaba Cloud.
-
O serviço IoT Platform está ativado.
-
O ApsaraMQ for RocketMQ está ativado.
Se o ApsaraMQ for RocketMQ não estiver ativado, acesse a página do produto ApsaraMQ for RocketMQ para ativar o serviço.
-
Você preparou um ambiente de desenvolvimento. Neste exemplo, usa-se um ambiente Java com os seguintes componentes:
Sistema operacional: Windows 10 de 64 bits
Versão do JDK: JDK 8
Ambiente de desenvolvimento integrado (IDE): IntelliJ IDEA Community Edition
Informações básicas
Processo de encaminhamento de dados

Benefícios:
Ao conectar dispositivos ao IoT Platform via Message Queuing Telemetry Transport (MQTT), os links de transmissão usam criptografia Transport Layer Security (TLS) para evitar adulteração dos dados. Para mais informações sobre MQTT, consulte Especificações do protocolo MQTT.
O ApsaraMQ for RocketMQ atua como buffer de mensagens para reduzir flutuações de tráfego e cargas de trabalho simultâneas nos servidores de negócios.
Procedimento
-
Acesse o console do IoT Platform e crie um produto e um dispositivo.
-
Na página Overview, clique em All environment. Na aba All environment, localize a instância que deseja gerenciar e clique no ID ou no nome da instância.
Neste exemplo, a região China (Shanghai) está selecionada.
-
No painel de navegação à esquerda, escolha . Na página Products, clique em Create Product. Configure os parâmetros na página Create Product e clique em OK.
Neste exemplo, o parâmetro Product Name está definido como MQ_test e o parâmetro Node Type como Directly Connected Device. Mantenha os valores padrão para os demais parâmetros.
-
Clique em View Product Details. Na página de detalhes do produto, escolha e clique em Edit Topic Category para criar uma categoria de tópico destinada ao envio de dados do dispositivo.
Neste exemplo, cria-se uma categoria de tópico chamada /{YourProductKey}/${YourDeviceName}/user/data.
-
No painel de navegação à esquerda, escolha . Na página Devices, clique em Add Device para criar um dispositivo associado ao produto MQ_test.
Neste exemplo, cria-se um dispositivo chamado MQdevice.
-
-
No console do ApsaraMQ for RocketMQ, crie um tópico e um consumidor.
Acesse o console do ApsaraMQ for RocketMQ.
-
No painel de navegação à esquerda, clique em Instances. Na página Instances, clique em Create Instance. Neste exemplo, cria-se uma instância na região China (Shanghai), com o parâmetro Instance Version definido como V4.0 e Instance Type como Standard Edition Instance.
Para mais informações, consulte Criar uma instância.
ImportanteA instância do ApsaraMQ for RocketMQ deve residir na mesma região da instância do IoT Platform.
É possível encaminhar fluxos de dados apenas para tópicos de instâncias ApsaraMQ for RocketMQ V4.x.
Na página Instances, localize a instância onde deseja criar o banco de dados e clique no nome dela.
-
Na página Instance Details, clique em Create Group. Configure os parâmetros no painel Create Group e clique em OK, conforme ilustrado na figura a seguir.

-
Clique em Create Topic. No painel Create Topic, defina o parâmetro Message Type como Normal Message.

-
Crie um consumidor e verifique seu status no console do ApsaraMQ for RocketMQ. Certifique-se de que o consumidor esteja no estado Online e que as assinaturas dos consumidores no grupo estejam consistentes.
Neste exemplo, usa-se um SDK TCP para enviar e receber mensagens. Para obter detalhes sobre como adquirir e usar um SDK TCP, consulte Enviar e assinar mensagens normais com SDKs de cliente TCP.
Código Java de exemplo:
NotaPara saber como visualizar um AccessKey ID e um AccessKey secret, consulte Criar um par de AccessKey.
Para mais informações sobre o uso do ApsaraMQ for RocketMQ, consulte a documentação do 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"); } }
-
No console do IoT Platform, configure uma regra de encaminhamento de dados na instância para enviar os dados do dispositivo ao ApsaraMQ for RocketMQ.
No painel de navegação à esquerda, escolha .
-
Na página Data Forwarding, clique em Create Rule.
ImportanteSe a página Data Forwarding exibida for da versão mais recente, clique em Back to Previous Version no canto superior direito. Quando a página da versão anterior aparecer, clique em Create Rule.
Na caixa de diálogo Create Data Forwarding Rule, defina o parâmetro Rule Name como MQ forwarding e o parâmetro Data Type como JSON. Em seguida, clique em OK.
-
Na página de detalhes da regra, clique em Write SQL Statement. Configure os parâmetros na caixa de diálogo Write SQL Statement e clique em OK, conforme mostrado na figura abaixo.

-
Clique em Add Operation. Especifique o destino para o qual deseja encaminhar os dados na caixa de diálogo Add Operation e clique em OK, conforme ilustrado a seguir.

-
Acesse a página Data Forwarding. Localize a regra MQ forwarding e clique em Start na coluna Actions.
Após ativar a regra, o IoT Platform encaminha os dados do dispositivo para o tópico do ApsaraMQ for RocketMQ.
-
Use um SDK Java para simular um dispositivo, conecte-o ao IoT Platform e envie dados por meio dele.
Baixe o pacote de demonstração em Download Java SDK Demo e descompacte-o.
Inicie o IntelliJ IDEA e importe o projeto de exemplo JavaLinkKitDemo do pacote de demonstração.
Especifique as seguintes informações de certificado do dispositivo MQdevice no arquivo
device_id.json: ProductKey, DeviceName e DeviceSecret.-
Altere o tópico MQTT no arquivo
src\main\java\com.aliyun.alink.devicesdk.demo\MqttSample.javapara o tópico no qual o dispositivo envia dados.Neste exemplo, usa-se o tópico /{YourProductKey}/${YourDeviceName}/user/data.
/** * 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"; ...... ...... } -
Modifique o endpoint MQTT no arquivo
src\main\java\com.aliyun.alink.devicesdk.demo\HelloWorld.javapara o endpoint MQTT do seu dispositivo.Neste exemplo, usa-se o seguinte endpoint MQTT. Para saber como obter endpoints MQTT, consulte Visualizar o endpoint de uma instância.
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"; ...... ...... } Execute o arquivo
src\main\java\com.aliyun.alink.devicesdk.demo\HelloWorld.javapara iniciar o dispositivo.
No console do IoT Platform, acesse a página Instance Details da instância e escolha . Visualize os logs do dispositivo e verifique se os dados foram encaminhados corretamente ao ApsaraMQ for RocketMQ.

-
Visualize os dados no console do ApsaraMQ for RocketMQ.
-
Execute o código no seu servidor local para assinar o tópico do ApsaraMQ for RocketMQ.

-
Acesse a página de instance details no console do ApsaraMQ for RocketMQ e clique em Message Query. Pesquise mensagens por tópico ou ID da mensagem na página Message Query.
Clique em Details para visualizar os detalhes da mensagem encaminhada ao ApsaraMQ for RocketMQ e baixe a mensagem.
Mensagem de exemplo:
{"deviceName":"MQdevice"}
-