Usar o roteamento de mensagens do Hub IoT para enviar mensagens de dispositivo para nuvem para serviços do Azure

Roteamento de mensagens permite que você envie mensagens de dispositivos para serviços de nuvem de maneira automatizada, escalonável e confiável. O roteamento de mensagens pode ser usado para:

  • Enviar mensagens e eventos de telemetria do dispositivo para o ponto de extremidade interno e pontos de extremidade personalizados. Os eventos que podem ser roteados incluem eventos de ciclo de vida do dispositivo, eventos de alteração do dispositivo gêmeo, eventos de alteração de gêmeo digital e eventos de estado de conexão do dispositivo.

  • Filtrar dados antes de roteá-los aplicando consultas avançadas. O roteamento de mensagens permite consultar as propriedades da mensagem e o corpo da mensagem, bem como as marcas do dispositivo gêmeo e as propriedades do dispositivo gêmeo. Para obter mais informações, consulte consultas no roteamento de mensagens.

O Hub IoT define um formato comum para todas as mensagens de dispositivo para nuvem que permite a interoperabilidade entre protocolos. Para obter mais informações, confira Criar e ler mensagens do Hub IoT.

Observação

Alguns dos recursos mencionados neste artigo, como mensagens de nuvem para dispositivo, dispositivos gêmeos e gerenciamento de dispositivo estão disponíveis somente na camada Standard do Hub IoT. Para obter mais informações sobre as camadas básica e padrão/gratuita do Hub IoT, confira Escolher a camada certa do Hub IoT para a sua solução.

Pontos de extremidade de roteamento

Cada Hub IoT tem um padrão de ponto de extremidade interno chamado de mensagens/eventos que é compatível com Hubs de Eventos. Você também pode criar pontos de extremidade personalizados que apontam para outros serviços em sua assinatura do Azure.

No momento, o Hub IoT é compatível com os seguintes pontos de extremidade para roteamento de mensagens:

  • Ponto de extremidade interno
  • Contêineres de armazenamento
  • Filas do Barramento de Serviço
  • Tópicos do Barramento de Serviço
  • Hubs de Eventos
  • Cosmos DB

Para saber mais sobre pontos de extremidade do Hub IoT, consulte pontos de extremidade de Hub IoT.

Cada mensagem é roteada para todos os pontos de extremidade a cujas consultas de roteamento ela corresponde, o que significa que uma mensagem pode ser roteada para vários pontos de extremidade. No entanto, se uma mensagem corresponder a várias rotas e todas apontarem para o mesmo ponto de extremidade, o Hub IoT entregará mensagens a esse ponto apenas uma vez.

O Hub IoT precisa de acesso de gravação a esses pontos de extremidade para que o direcionamento de mensagens funcione. Se você configurar os pontos de extremidade por meio do Portal do Azure, as permissões necessárias serão adicionadas para você. Se você configurar seus pontos de extremidade usando o PowerShell ou a CLI do Azure, precisará fornecer a permissão de acesso de gravação.

Para aprender como criar pontos de extremidade, veja os seguintes artigos:

Certifique-se de configurar os serviços para dar suporte à taxa de transferência esperada. Por exemplo, se você estiver usando Hubs de Eventos como um ponto de extremidade personalizado, precisará configurar as unidades de produtividade para esse hub de eventos para que ele possa manipular a entrada de eventos que você planeja enviar por meio do roteamento de mensagens do Hub IoT. Da mesma forma, ao usar uma fila do Barramento de Serviço como um ponto de extremidade, você deve configurar o tamanho máximo para garantir que a fila possa conter todos os dados inseridos, até que eles sejam reinseridos pelos consumidores. Quando você configurar sua solução de IoT pela primeira vez, talvez precise monitorar os outros pontos de extremidade e fazer eventuais ajustes necessários para a carga real.

Se o seu ponto de extremidade personalizado tiver configurações de firewall, considere o uso da exceção interna confiável da Microsoft.

Rotear para um ponto de extremidade em outra assinatura

Se o recurso de ponto de extremidade estiver em uma assinatura diferente do Hub IoT, configure o Hub IoT como um serviço confiável da Microsoft antes de criar um ponto de extremidade personalizado. Ao criar o ponto de extremidade personalizado, defina o Tipo de autenticação como identidade atribuída pelo usuário.

Para obter mais informações, consulte Conectividade de saída do Hub IoT para outros recursos do Azure.

Consultas de roteamento

O roteamento de mensagens do Hub IoT fornece também fornece uma funcionalidade de consulta para filtrar os dados antes de encaminhá-los aos pontos de extremidade. Cada regra de roteamento que você configura tem as seguintes propriedades:

Propriedade Descrição
Nome O nome exclusivo que identifica a consulta.
Origem A origem do fluxo de dados a ser afetado. Por exemplo, telemetria do dispositivo.
Condição A expressão de consulta para a consulta de roteamento que é executada nas propriedades do aplicativo de mensagens, propriedades do sistema, no corpo da mensagem, nas marcas de dispositivo gêmeo e propriedades de dispositivo gêmeo para determinar se é uma correspondência do ponto de extremidade.
Ponto de extremidade O nome do ponto de extremidade para o qual o Hub IoT envia as mensagens que correspondem à consulta. É recomendado que você escolha um ponto de extremidade na mesma região que o Hub IoT.

Uma única mensagem pode corresponder à condição em várias consultas de roteamento e, nesse caso, o Hub IoT entrega a mensagem ao ponto de extremidade associado a cada regra correspondente. O Hub IoT também elimina a duplicação da entrega de mensagem automaticamente, portanto, se uma mensagem corresponder a várias regras com o mesmo destino, ela será gravada apenas uma vez no destino.

Para saber mais, confira sintaxe de consultado roteamento de mensagens do Hub IoT.

Ler dados que foram encaminhados

Use os artigos a seguir para saber como ler a mensagem de um ponto de extremidade.

Rota de fallback

A rota de fallback envia todas as mensagens que não atendem às condições de consulta em nenhuma das rotas existentes para o ponto de extremidade interno (mensagens/eventos) que é compatível com o Hubs de Eventos. Se o roteamento de mensagens estiver habilitado, você poderá habilitar a funcionalidade de rota de fallback. Depois que qualquer rota é criada, os dados param de fluir para o ponto de extremidade interno, a menos que uma rota seja criada para esse ponto de extremidade. Se não houver nenhuma rota para o ponto de extremidade interno e houver uma rota de fallback habilitada, somente as mensagens que não corresponderem a nenhuma condição de consulta nas rotas serão enviadas ao ponto de extremidade interno. Além disso, se todas as rotas existentes forem excluídas, a capacidade da rota de fallback precisará ser habilitada para receber todos os dados no ponto de extremidade interno.

Você pode habilitar ou desabilitar a rota de fallback no portal do Azure, na folha Roteamento de mensagens. Você também pode usar o Azure Resource Manager para FallbackRouteProperties para usar um ponto de extremidade personalizado para a rota de fallback.

Eventos que não são de telemetria

Além da telemetria do dispositivo, o roteamento de mensagens também permite enviar eventos sem telemetria, incluindo:

  • Eventos de alteração de dispositivo gêmeo
  • Eventos do ciclo de vida do dispositivo
  • Eventos de ciclo de vida do trabalho do dispositivo
  • Eventos de alteração de gêmeo digital
  • Eventos de estado de conexão do dispositivo

Por exemplo, se uma rota for criada com a fonte de dados definida como Eventos de alteração de dispositivo gêmeo, o Hub IoT envia mensagens para o ponto de extremidade que contém a alteração no dispositivo gêmeo. Da mesma forma, se uma rota for criada com a fonte de dados definida como Eventos de ciclo de vida do dispositivo, o Hub IoT envia uma mensagem indicando se o dispositivo ou módulo foi excluído ou criado. Para obter mais informações sobre eventos de ciclo de vida do dispositivo, consulte Notificações de ciclo de vida do dispositivo e módulo.

Ao usar o IoT Plug and Play do Azure, um desenvolvedor pode criar rotas com a fonte de dados definida como Eventos de alteração do Gêmeo digital e o Hub IoT envia mensagens sempre que uma propriedade de gêmeo digital é definida ou alterada, um gêmeo digital é substituído ou quando ocorre um evento de alteração para o dispositivo gêmeo subjacente. Da mesma forma, se uma rota for criada com a fonte de dados definida como Eventos de estado de conexão do dispositivo, o Hub IoT envia uma mensagem indicando se o dispositivo foi conectado ou desconectado.

O Hub IoT também se integra à Grade de Eventos do Azure para publicar eventos de dispositivo para dar suporte a integrações em tempo real e à automação de fluxos de trabalho com base nesses eventos. Confira as principais diferenças entre o roteamento de mensagens e Grade de Eventos para saber o que funciona melhor para seu cenário.

Limitações para eventos de estado de conexão do dispositivo

Os eventos de estado de conexão do dispositivo estão disponíveis para dispositivos que se conectam usando o protocolo MQTT ou AMQP ou usando qualquer um desses protocolos em WebSockets. As solicitações feitas somente com HTTPS não dispararão notificações de estado de conexão do dispositivo. Para que o Hub IoT comece a enviar eventos de estado de conexão do dispositivo, depois de abrir uma conexão, um dispositivo deve chamar a operação de mensagem de recebimento da nuvem para dispositivo ou a operação de telemetria de envio do dispositivo para nuvem. Fora dos SDKs do IoT do Azure, no MQTT, essas operações são equivalentes a assinar ou publicar operações nos Tópicosde mensagens apropriados. Em AMQP, essas operações equivalem a anexar ou transferir uma mensagem nos caminhos de link apropriados. Para obter mais informações, consulte os seguintes artigos:

O Hub IoT não relata cada evento de conexão e desconexão de dispositivo individual, mas, em vez disso, publica o estado de conexão atual, obtido em um instantâneo periódico de 60 segundos. O recebimento do mesmo evento de estado de conexão com números de sequência diferentes ou eventos de estado de conexão diferentes significa que houve uma alteração no estado de conexão do dispositivo durante a janela de 60 segundos.

Testar rotas

Ao criar uma rota ou editar uma rota existente, você deve testar a consulta de rota com uma mensagem de exemplo. Você pode testar rotas individuais ou todas as rotas de uma vez. Não será roteada nenhuma mensagem aos pontos de extremidade durante o teste. O portal do Azure, o Azure Resource Manager, o Azure PowerShell e a CLI do Azure podem ser usados para o teste. Os resultados ajudam a identificar se a mensagem de exemplo correspondeu ou não à consulta ou se o teste não pôde ser executado porque a sintaxe de mensagem ou de consulta de exemplo está incorreta. Para saber mais, confira Testar Rota e Testar todas as rotas.

Latency

Ao rotear mensagens de telemetria do dispositivo para nuvem, haverá um pequeno aumento na latência de ponta a ponta após a criação da primeira rota.

Na maioria dos casos, o aumento médio na latência é menor que 500 milissegundos. No entanto, a latência pode variar e ser maior de acordo com a camada do hub IoT e da arquitetura da solução. Você pode monitorar a latência usando a métrica do Hub IoT Roteamento: latência de mensagem para mensagens/eventos ou d2c.endpoints.latency.builtIn.events. Criar ou excluir qualquer rota após a primeira não afeta a latência de ponta a ponta.

Monitorar e solucionar problemas

O Hub IoT fornece várias métricas relacionadas ao roteamento e ao ponto de extremidade para fornecer uma visão geral da integridade do hub e o número de mensagens enviadas. Você também pode rastrear os erros que ocorrem durante a avaliação de uma consulta de roteamento e a integridade do ponto de extremidade, como percebido pelo Hub IoT, com a categoria rotas nos logs de recursos do Hub IoT. Para saber mais sobre como usar as métricas e os logs de recursos com o Hub IoT, confira Monitorar o Hub IoT do Azure.

Você pode usar a API REST Obter integridade do ponto de extremidade para obter o status da integridade dos pontos de extremidade.

Use a Guia de solução de problemas para roteamento para obter mais detalhes e suporte a respeito.