Todos os produtos
Search
Central de documentação

IoT Platform:Conecte um cliente ao IoT Platform usando o SDK para Java

Última atualização: Jun 26, 2026

Este tópico descreve como conectar um cliente Java Message Service (JMS) que usa o protocolo Advanced Message Queuing Protocol (AMQP) ao Alibaba Cloud IoT Platform e receber mensagens do IoT Platform pelo recurso de assinatura no lado do servidor.

Pré-requisitos

Obtenha o ID do grupo de consumidores que assina as mensagens de um tópico.

Ambiente de desenvolvimento

Neste exemplo, o ambiente de desenvolvimento inclui os seguintes componentes:

Baixe o cliente Apache Qpid JMS

Para baixar o cliente e visualizar as instruções, acesse Qpid JMS 0.57.0.

Neste exemplo, adicione as seguintes dependências a um projeto Maven para baixar o cliente Qpid JMS:

<!-- amqp 1.0 qpid client -->
 <dependency>
   <groupId>org.apache.qpid</groupId>
   <artifactId>qpid-jms-client</artifactId>
   <version>0.57.0</version>
 </dependency>
 <!-- util for base64-->
 <dependency>
   <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.10</version>
</dependency>

Demonstração

Use um cliente AMQP para receber mensagens do IoT Platform com uma conta Alibaba Cloud ou um usuário RAM. Por exemplo, a Empresa A tem uma conta Alibaba Cloud chamada Conta A e a Empresa B tem uma conta Alibaba Cloud chamada Conta B. A Empresa A configurou uma assinatura no lado do servidor no console do IoT Platform usando a Conta A.

  • Use a Conta A ou seu usuário do Resource Access Management (RAM) com permissões concedidas diretamente

    Nota

    Para um usuário RAM autorizado diretamente, conceda a permissão de uso do recurso de assinatura AMQP no lado do servidor (iot:sub). Caso contrário, a conexão falhará. Para mais informações sobre como conceder permissões, consulte Autorização RAM para IoT Platform.

    Para melhorar a segurança dos dados, recomendamos conceder permissões operacionais específicas aos usuários RAM por meio de funções RAM. Para mais informações, consulte a seção a seguir.

    Para mais informações, consulte a seção Receber mensagens de assinatura no lado do servidor na conta atual deste tópico.

  • Use um usuário RAM que assume uma função RAM

    O usuário RAM pode pertencer à Conta A ou à Conta B. Use esse usuário RAM para conectar um cliente AMQP ao IoT Platform ativado na Conta A. Assim, você recebe mensagens de dispositivos pelo recurso de assinatura no lado do servidor.

    Para mais informações, consulte a seção Receber mensagens de assinatura no lado do servidor como um usuário RAM que assume uma função RAM deste tópico.

Receber mensagens de assinatura no lado do servidor na conta atual

  1. Baixe o pacote de demonstração e descompacte-o.

  2. Abra o IntelliJ IDEA e importe o projeto de exemplo amqp-demo-en do pacote de demonstração.

    O arquivo pom.xml já contém as dependências Maven necessárias para baixar o cliente Qpid JMS.

  3. No arquivo AmqpClient.java, localizado no diretório src/main/java/com.aliyun.iotx.demo, especifique os parâmetros de conexão AMQP descritos na tabela a seguir.

    Importante
    • Especifique valores válidos para os parâmetros. Caso contrário, o cliente AMQP não conseguirá se conectar ao IoT Platform.

    • Neste exemplo, o trecho de código Thread.sleep(60 * 1000); encerra o programa 1 minuto após a inicialização. Defina a duração conforme os requisitos do seu negócio.

    Para mais informações, consulte Conectar um cliente AMQP ao IoT Platform.

    Parâmetro

    Descrição

    accessKey

    AccessKey ID e AccessKey secret da conta Alibaba Cloud ou do usuário RAM.

    Faça login no console do IoT Platform, passe o ponteiro sobre a foto de perfil no canto superior direito e clique em AccessKey Management para obter o AccessKey ID e o AccessKey secret.

    accessSecret

    consumerGroupId

    ID do grupo de consumidores na instância do IoT Platform.

    Faça login no console do IoT Platform. Na instância correspondente, acesse Message Forwarding > Server-side Subscription > Consumer Group List para visualizar o ID do grupo de consumidores.

    iotInstanceId

    ID da instância do IoT Platform. Visualize o ID da instância na aba Overview no console do IoT Platform.

    • Se o ID da instância for exibido, defina este parâmetro com o ID da instância.

    • Se a aba Overview não for exibida ou a instância não tiver ID, deixe este parâmetro vazio no formato iotInstanceId = "".

    clientId

    ID do cliente. Defina este ID com até 64 caracteres. Recomendamos usar um identificador exclusivo, como UUID, endereço MAC ou endereço IP do servidor onde o cliente AMQP está localizado.

    Após conectar e iniciar o cliente AMQP, faça login no console do IoT Platform. Na aba Consumer Groups da página Message Forwarding > > > Server-side Subscription da instância, clique em View ao lado do grupo de consumidores. A página Consumer Group Details exibirá este parâmetro para facilitar a identificação dos clientes.

    connectionCount

    Número de conexões habilitadas no cliente AMQP. Valor máximo: 128. Use este parâmetro para expansão horizontal em cenários de envio de mensagens em tempo real.

    Na página Consumer Group Details, cada cliente conectado aparece como ${clientId}+"-"+ Number. O número mínimo é 0.

    host

    Endpoint usado pelo cliente AMQP para se conectar ao IoT Platform.

    Para mais informações sobre o endpoint a especificar na variável ${YourHost}, consulte Gerenciar endpoints de instância.

  4. Execute o programa AmqpClient.java.

    • Se a saída for semelhante ao exemplo abaixo, o cliente AMQP estará conectado ao IoT Platform e pronto para receber mensagens:

      topic = /***********/******/thing/event/property/post,
      message = 2**************7,
      content = {"temperature":29,"humidity":29,"time":1617357297270}

      Parâmetro

      Descrição

      topic

      Tópico usado para enviar propriedades do dispositivo.

      messageId

      ID da mensagem.

      content

      Conteúdo da mensagem.

    • Se ocorrer um erro no código ou no ambiente de rede, o cliente AMQP não conseguirá se conectar ao IoT Platform.

      Verifique o código e as configurações de rede no log de erros. Corrija o problema e execute o código novamente.

Receber mensagens de assinatura no lado do servidor como um usuário RAM que assume uma função RAM

Pré-requisitos

Atribua a função RAM ao usuário RAM para acessar os recursos de assinatura no lado do servidor do IoT Platform pertencentes à Conta A. Para mais informações, consulte Autorizar um usuário RAM da conta Alibaba Cloud atual a usar a assinatura no lado do servidor e Autorizar um usuário RAM de outra conta a usar a assinatura no lado do servidor.

Procedimento

  1. Baixe o pacote de demonstração e descompacte-o.

  2. Abra o IntelliJ IDEA e importe o projeto de exemplo amqp-sts-demo do pacote de demonstração.

    O arquivo pom.xml já contém as dependências Maven necessárias para baixar o cliente Qpid JMS.

  3. No arquivo AmqpStsTokenClient.java, localizado no diretório src/main/java/com/aliyun/iotx/demo, especifique os parâmetros de conexão AMQP descritos na tabela a seguir.

    Importante
    • Especifique valores válidos para os parâmetros. Caso contrário, o cliente AMQP não conseguirá se conectar ao IoT Platform.

    • Um token do Security Token Service (STS) tem validade máxima de 1 hora. Atualize regularmente os parâmetros de conexão AMQP para garantir a reconexão do cliente ao IoT Platform. Para mais informações, consulte a seção scheduledExecutorService.scheduleAtFixedRate no código de demonstração.

    • Neste exemplo, o trecho de código Thread.sleep(6000 * 1000); encerra o programa 1 minuto após a inicialização. Defina a duração conforme os requisitos do seu negócio.

    Para mais informações, consulte Conectar um cliente AMQP ao IoT Platform.

    Parâmetro

    Descrição

    CONNECTION_COUNT

    Número de conexões habilitadas no cliente AMQP. Valor máximo: 128. Use este parâmetro para expansão horizontal em cenários de envio de mensagens em tempo real.

    Na página Consumer Group Details no console do IoT Platform, cada cliente conectado aparece como "clientId-"+ Number. O número mínimo é 0.

    DURATION_SECONDS

    Período de validade do token STS. A validade não pode exceder 1 hora. Valores válidos: 15 a 60. Unidade: minutos.

    STS_ENDPOINT

    Endpoint usado para obter o token STS. Para mais informações, consulte Endpoints.

    STS_ACCESS_KEY

    AccessKey ID e AccessKey secret do usuário RAM que assume a função RAM da Conta A.

    STS_ACCESS_SECRET

    STS_ROLE_ARN

    Alibaba Cloud Resource Name (ARN) da função RAM a ser assumida. Formato: acs:ram::<account-id>:role/<role-name>.

    <role-name> é o nome da função RAM em letras minúsculas. Após criar uma função RAM, clique em no nome da função para visualizar o ARN na seção Basic Information.

    CONSUMER_GROUP_ID

    ID do grupo de consumidores que assina as mensagens de assinatura no lado do servidor.

    Para visualizar o ID do grupo de consumidores: faça login no console do IoT Platform e clique em no cartão da instância desejada. No painel de navegação à esquerda, escolha Message Forwarding > Server-side Subscription. O ID aparece na aba Consumer Groups.

    IOT_INSTANCE_ID

    ID da instância do IoT Platform na Conta A.

    Faça login no console do IoT Platform e visualize o ID da instância na aba Overview.

    • Se o ID da instância for exibido, defina este parâmetro com o ID da instância.

    • Se a aba Overview não for exibida ou a instância não tiver ID, deixe este parâmetro vazio no formato IOT_INSTANCE_ID = "".

    HOST

    Endpoint usado pelo cliente AMQP para se conectar à instância do IoT Platform na Conta A. Para mais informações, consulte Gerenciar endpoints de instância.

  4. Execute o programa AmqpStsTokenClient.java.

    • Se a saída for semelhante ao exemplo abaixo, o cliente AMQP estará conectado ao IoT Platform e pronto para receber mensagens:

      topic = /***********/******/thing/event/property/post,
      message = 2**************7,
      content = {"temperature":29,"humidity":29,"time":1617357297270}

      Parâmetro

      Descrição

      topic

      Tópico usado para enviar propriedades do dispositivo.

      messageId

      ID da mensagem.

      content

      Conteúdo da mensagem.

    • Se ocorrer um erro no código ou no ambiente de rede, o cliente AMQP não conseguirá se conectar ao IoT Platform.

      Verifique o código e as configurações de rede no log de erros. Corrija o problema e execute o código novamente.

Referências

Para mais informações sobre códigos de erro relacionados ao recurso de assinatura no lado do servidor, consulte a seção Códigos de erro relacionados a mensagens do tópico "Logs do IoT Platform".