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

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

  • Envie 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 do ciclo de vida do dispositivo, eventos de alteração de gêmeos de dispositivo, eventos de alteração de gêmeos digitais e eventos de estado de conexão do dispositivo.

  • Filtre os dados antes de roteá-los aplicando consultas avançadas. O roteamento de mensagens permite que você consulte as propriedades da mensagem e o corpo da mensagem, bem como as tags gêmeas do dispositivo e as propriedades gêmeas do dispositivo. 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 para interoperabilidade entre protocolos. Para obter mais informações, consulte Criar e ler mensagens do Hub IoT.

Nota

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

Pontos finais de encaminhamento

Cada hub IoT tem um ponto de extremidade de roteamento padrão chamado 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.

Atualmente, o Hub IoT oferece suporte aos seguintes pontos de extremidade para roteamento de mensagens:

  • Ponto de extremidade integrado
  • Contentores de armazenamento
  • Filas do Service Bus
  • Tópicos do Service Bus
  • Hubs de Eventos
  • Cosmos DB

Para obter mais informações sobre cada um desses pontos de extremidade, consulte Pontos de extremidade do Hub IoT.

Cada mensagem é roteada para todos os pontos de extremidade cujas consultas de roteamento correspondem, 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 que apontam para o mesmo ponto de extremidade, o Hub IoT entregará a mensagem a esse ponto de extremidade apenas uma vez.

O Hub IoT precisa de acesso de gravação a esses pontos de extremidade de serviço para que o roteamento de mensagens funcione. Se você configurar seus 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 saber como criar pontos de extremidade, consulte os seguintes artigos:

Certifique-se de configurar seus serviços para suportar a taxa de transferência esperada. Por exemplo, se você estiver usando Hubs de Eventos como um ponto de extremidade personalizado, deverá configurar as unidades de taxa de transferência desse hub de eventos para que ele possa lidar com 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 Service Bus como ponto de extremidade, você deve configurar o tamanho máximo para garantir que a fila possa conter todos os dados ingressados, até que sejam enviados pelos consumidores. Ao configurar sua solução de IoT pela primeira vez, talvez seja necessário monitorar seus outros pontos de extremidade e fazer os ajustes necessários para a carga real.

Se o seu ponto de extremidade personalizado tiver configurações de firewall, considere usar a exceção de primeira parte confiável da Microsoft.

Encaminhar para um ponto de extremidade em outra assinatura

Se o recurso de ponto de extremidade estiver em uma assinatura diferente do seu hub IoT, você precisará configurar seu 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.

Roteamento de consultas

O roteamento de mensagens do Hub IoT fornece um recurso de consulta para filtrar os dados antes de roteá-los para os pontos de extremidade. Cada consulta de roteamento configurada tem as seguintes propriedades:

Property Descrição
Nome O nome exclusivo que identifica a consulta.
Source A origem do fluxo de dados a ser acionado. Por exemplo, telemetria de dispositivo.
Condition A expressão de consulta para a consulta de roteamento que é executada em relação às propriedades do aplicativo de mensagem, propriedades do sistema, corpo da mensagem, tags gêmeas de dispositivo e propriedades gêmeas de dispositivo para determinar se é uma correspondência para o ponto de extremidade.
Ponto final O nome do ponto de extremidade para o qual o Hub IoT envia mensagens que correspondem à consulta. Recomendamos que você escolha um ponto de extremidade na mesma região do seu hub IoT.

Uma única mensagem pode corresponder à condição em várias consultas de roteamento, caso em que o Hub IoT entrega a mensagem ao ponto de extremidade associado a cada consulta correspondente. O Hub IoT também desduplica automaticamente a entrega de mensagens, portanto, se uma mensagem corresponder a várias consultas que têm o mesmo destino, ela só será gravada uma vez nesse destino.

Para obter mais informações, consulte Sintaxe da consulta de roteamento de mensagens do Hub IoT.

Ler dados que foram encaminhados

Use os artigos a seguir para aprender a ler mensagens de um ponto de extremidade.

Rota de fallback

A rota de fallback envia todas as mensagens que não satisfazem as condições de consulta em nenhuma das rotas existentes para o ponto de extremidade interno (mensagens/eventos), que é compatível com Hubs de Eventos. Se o roteamento de mensagens estiver habilitado, você poderá habilitar o recurso 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 rotas para o ponto de extremidade interno e uma rota de fallback estiver habilitada, somente as mensagens que não corresponderem a nenhuma condição de consulta em rotas serão enviadas para o ponto de extremidade interno. Mesmo que todas as rotas existentes sejam excluídas, o recurso de rota de fallback deve ser habilitado 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 não telemétricos

Além da telemetria do dispositivo, o roteamento de mensagens também permite o envio de eventos não relacionados à telemetria, incluindo:

  • Eventos de alteração de gêmeos de dispositivo
  • Eventos do ciclo de vida do dispositivo
  • Eventos do ciclo de vida do trabalho do dispositivo
  • Eventos de alteração de duplos digitais
  • 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 Gêmeos de Dispositivo, o Hub IoT enviará mensagens para o ponto de extremidade que contêm a alteração no gêmeo do dispositivo. Da mesma forma, se uma rota for criada com a fonte de dados definida como Eventos do Ciclo de Vida do Dispositivo, o Hub IoT enviará uma mensagem indicando se o dispositivo ou módulo foi excluído ou criado. Para obter mais informações sobre eventos do ciclo de vida do dispositivo, consulte Notificações do ciclo de vida do dispositivo e do módulo.

Ao usar o Azure IoT Plug and Play, um desenvolvedor pode criar rotas com a fonte de dados definida como Digital Twin Change Events 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 um evento de alteração acontece para o gêmeo de dispositivo subjacente. Por fim, se uma rota for criada com a fonte de dados definida como Eventos de Estado de Conexão do Dispositivo, o Hub IoT enviará 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. Veja as principais diferenças entre o roteamento de mensagens e a Grade de Eventos para saber qual funciona melhor para o seu cenário.

Limitações para eventos de estado de ligação de dispositivos

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 por WebSockets. As solicitações feitas apenas com HTTPS não acionarã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 de nuvem para dispositivo ou a operação de telemetria de envio de dispositivo para nuvem. Fora dos SDKs do Azure IoT, no MQTT essas operações equivalem a operações SUBSCRIBE ou PUBLISH nos tópicos de mensagens apropriados. No 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 publica o estado de conexão atual obtido em um instantâneo periódico de 60 segundos. Receber o 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.

Rotas de teste

Ao criar uma nova rota ou editar uma rota existente, você deve testar a consulta de rota com uma mensagem de exemplo. Você pode testar rotas individuais ou testar todas as rotas de uma só vez e nenhuma mensagem é roteada para os 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 testes. 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 mensagem de exemplo ou a sintaxe da consulta estão incorretas. Para saber mais, consulte Testar rota e Testar todas as rotas.

Latência

Quando você roteia mensagens de telemetria do dispositivo para a nuvem, há um ligeiro aumento na latência de ponta a ponta após a criação da primeira rota.

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

Monitorizar e resolver problemas

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

Você pode usar a API REST Get Endpoint Health para obter o status de integridade dos endpoints.

Utilize o guia de resolução de problemas para encaminhamento para obter mais detalhes e suporte para resolver problemas do encaminhamento.