Partilhar via


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.

Note

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 e o tamanho certos do Hub IoT para sua solução.

Pontos de extremidade de roteamento

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 Barramento de Serviço
  • 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 Gerenciar rotas e pontos de extremidade usando o portal do Azure.

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 ajustes 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ê poderá usar métodos de autenticação diferentes, dependendo dos seus requisitos de segurança:

  • Autenticação baseada em chave: você pode usar cadeias de conexão para autenticar pontos de extremidade em assinaturas diferentes ou até mesmo em locatários diferentes. Esse método usa as chaves de acesso ou cadeias de conexão do ponto de extremidade para autenticação.

  • Identidade gerenciada atribuída pelo usuário: para maior segurança, você pode configurar seu hub IoT como um serviço confiável da Microsoft e usar a identidade gerenciada atribuída pelo usuário para autenticação. Esse método requer a configuração da identidade gerenciada antes de criar o ponto de extremidade personalizado.

Para obter mais informações sobre a autenticação de identidade gerenciada, 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 tem as seguintes propriedades:

Property Description
Name 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.
Endpoint 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. Se uma mensagem corresponder a várias consultas que têm o mesmo destino, o Hub IoT só a entrega uma vez a esse destino.

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

Ler dados roteados

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 página 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 mudança de gêmeos 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. Para saber qual serviço funciona melhor para o seu cenário, consulte as diferenças entre o roteamento de mensagens e a Grade de Eventos.

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 por WebSockets. As solicitações feitas apenas com HTTPS não acionam 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.

Latency

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.

Monitorar e solucionar 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.

Use o guia de solução de problemas para roteamento para obter mais detalhes e suporte para solução de problemas de roteamento.