Se você quiser usar recursos específicos do ApsaraMQ for RocketMQ, como mensagens ordenadas e mensagens transacionais, em aplicações em cloud, use regras de entrada ou saída de dados para trocar dados entre o ApsaraMQ for MQTT e o ApsaraMQ for RocketMQ. Este tópico descreve como importar dados do ApsaraMQ for RocketMQ para o ApsaraMQ for MQTT.
Informações de contexto
O ApsaraMQ for MQTT oferece suporte a SDKs de cloud. Conecte aplicações em cloud aos brokers do ApsaraMQ for MQTT para enviar e receber mensagens usando esses SDKs. Para obter informações sobre como usar os SDKs de cloud, consulte Cloud SDK overview.
O ApsaraMQ for MQTT também permite a troca de dados entre o ApsaraMQ for MQTT e outros services da Alibaba Cloud. Atualmente, a troca de dados é suportada apenas entre o ApsaraMQ for MQTT e o ApsaraMQ for RocketMQ.
Este tópico descreve como importar dados do ApsaraMQ for RocketMQ para o ApsaraMQ for MQTT pela Internet usando o SDK para Java.

Acesso à rede
O ApsaraMQ for MQTT fornece o Public Endpoint e o VPC Endpoint.
O Public Endpoint é um endereço IP usado para acessar o ApsaraMQ for MQTT pela Internet. Na maioria dos casos, os endpoints públicos são utilizados em cenários de IoT e Internet móvel.
O VPC Endpoint é um endereço IP usado para acessar o ApsaraMQ for MQTT em uma virtual private cloud (VPC). Geralmente, os endpoints de VPC são usados por aplicações em cloud para se conectarem ao ApsaraMQ for MQTT.
Se você for usar um endpoint para conectar um cliente ao ApsaraMQ for MQTT, utilize o nome de domínio em vez do endereço IP, pois o IP muda dinamicamente. A equipe técnica do ApsaraMQ for MQTT não se responsabiliza por falhas e perdas diretas ou indiretas nos seguintes cenários:
Você usa um endereço IP para acessar seu cliente no ApsaraMQ for MQTT. Após a equipe técnica do ApsaraMQ for MQTT atualizar a resolução do nome de domínio, o endereço IP original se torna inválido.
Uma política de firewall para endereços IP está configurada na rede onde seu cliente está em execução. Após a equipe técnica do ApsaraMQ for MQTT atualizar a resolução do nome de domínio, os novos endereços IP são bloqueados devido à política de firewall.
Pré-requisitos
O ambiente de desenvolvimento integrado (IDE) está instalado. Para mais informações, consulte IDE. Você pode usar o IntelliJ IDEA ou o Eclipse. Este exemplo utiliza o IntelliJ IDEA.
O Java 8 ou 11 está instalado. Para mais informações, consulte Java Downloads.
Uma instância do ApsaraMQ for MQTT foi criada, e um tópico e um grupo foram criados nessa instância. Para mais informações, consulte Create resources.
Uma instância do ApsaraMQ for RocketMQ foi criada, e um tópico e um grupo foram criados nessa instância. Para mais informações, consulte Create resources.
As regras de entrada de dados do ApsaraMQ for MQTT permitem importar dados apenas de instâncias do ApsaraMQ for RocketMQ 4.x.
Não é possível usar as regras de entrada de dados do ApsaraMQ for MQTT entre regiões diferentes. Ao criar uma regra de entrada de dados, certifique-se de que os recursos do ApsaraMQ for MQTT e do ApsaraMQ for RocketMQ estejam na mesma região.
1. Criar uma regra de entrada de dados
Faça login no ApsaraMQ for MQTT console. No painel de navegação à esquerda, clique em Instances.
Na barra de navegação superior, selecione a região onde reside a instância que você deseja gerenciar. Na página Instances, clique no nome da instância para acessar a página Instance Details.
No painel de navegação à esquerda, clique em Rules. No canto superior esquerdo da página Rules, clique em Create Rule.
-
No assistente Create Rule, execute as seguintes etapas:
-
Na etapa Configure Basic Information, especifique um ID de regra e selecione Data Inbound para o parâmetro Rule Type.

-
Na etapa Configure Rule Source, selecione uma instância do ApsaraMQ for RocketMQ já criada e um tópico criado nessa instância.

-
Na etapa Configure Rule Destination, selecione um tópico já criado na instância do ApsaraMQ for MQTT.

-
2. Preparar o código de teste
2,1 Baixar o código de exemplo
Baixe o projeto de demonstração mqtt-java-demo e descompacte o pacote do projeto em uma pasta na sua máquina local.
-
No projeto descompactado, localize a pasta lmq-java-demo, importe-a para o IntelliJ IDEA e confirme se as seguintes dependências estão incluídas no arquivo pom.xml:
<dependencies> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.70</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>ons-client</artifactId> <version>1.8.5.Final</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-onsmqtt</artifactId> <version>1.0.3</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.0</version> </dependency> </dependencies> -
Configure as credenciais de acesso.
Obtenha um par de AccessKey. Para obter informações sobre como obter um par de AccessKey, consulte Create an AccessKey.
Configure as variáveis de ambiente. O nome da variável de ambiente do AccessKey ID usado para acessar o ApsaraMQ for MQTT é MQTT_AK_ENV, e o nome da variável de ambiente do AccessKey secret usado para acessar o ApsaraMQ for MQTT é MQTT_SK_ENV. Para obter informações sobre como configurar variáveis de ambiente, consulte Configure access credentials.
2,2 Configurar o código para envio de mensagens
A classe RocketMQSendMessageToMQ4IoT.java contém o código para enviar mensagens usando o ApsaraMQ for RocketMQ e receber mensagens usando o ApsaraMQ for MQTT. Especifique os parâmetros dos recursos do ApsaraMQ for RocketMQ e do ApsaraMQ for MQTT com base nos comentários do código.
Ao testar o envio de mensagens, você pode comentar o código relacionado ao envio de mensagens ponto a ponto (P2P). Código de exemplo:
3. Verificar o resultado
Chame a função main na classe RocketMQSendMessageToMQ4IoT.java e use um dos seguintes métodos para verificar o envio e o consumo de uma mensagem.
Usar o código
Se um código semelhante ao seguinte for exibido, a mensagem foi enviada pelo ApsaraMQ for RocketMQ e consumida pelo ApsaraMQ for MQTT.

Usar o console
-
Verifique se a mensagem foi enviada. Acesse a página de detalhes da instância no console do ApsaraMQ for RocketMQ e clique em Message Query no painel de navegação à esquerda. Na página Message Query, verifique se a mensagem foi enviada por tópico e ID da mensagem.

-
Verifique se a mensagem foi consumida. Acesse a página de detalhes da instância no console do ApsaraMQ for MQTT e clique em Message trace query no painel de navegação à esquerda. Na página Message Trace Query, verifique se a mensagem foi consumida pelo ID da mensagem.
