Share via


Tutorial: Usar enriquecimentos de mensagem do Hub IoT do Azure

O enriquecimento de mensagens é a capacidade do Hub IoT do Azure de carimbar mensagens com informações adicionais antes que elas sejam enviadas para o ponto de extremidade designado. Uma razão para usar o enriquecimento de mensagens é incluir dados que podem ser usados para simplificar o processamento a jusante. Por exemplo, enriquecer mensagens de dispositivo com uma tag gêmea de dispositivo pode reduzir a carga sobre os clientes para fazer chamadas de API gêmeas de dispositivo para essas informações. Para obter mais informações, consulte Visão geral do enriquecimento de mensagens.

Na primeira parte deste tutorial, você viu como criar pontos de extremidade personalizados e rotear mensagens para outros serviços do Azure. Neste tutorial, você verá como criar e configurar os recursos extras necessários para testar o enriquecimento de mensagens para um hub IoT. Os recursos incluem um segundo contêiner de armazenamento para uma conta de armazenamento existente (criada na primeira parte do tutorial) para armazenar as mensagens enriquecidas e uma rota de mensagem para enviá-las para lá. Depois que as configurações para o roteamento de mensagens e enriquecimento de mensagens forem concluídas, você usará um aplicativo para enviar mensagens para o hub IoT. Em seguida, o hub os encaminha para ambos os contêineres de armazenamento. Somente as mensagens enviadas ao ponto de extremidade para o contêiner de armazenamento enriquecido são enriquecidas.

Neste tutorial, vai realizar as seguintes tarefas:

  • Crie um segundo contêiner em sua conta de armazenamento.
  • Crie outro ponto de extremidade personalizado e roteie mensagens para ele a partir do hub IoT.
  • Configure enriquecimentos de mensagens que são roteados para o novo ponto de extremidade.
  • Execute um aplicativo que simule um dispositivo IoT enviando mensagens para o hub.
  • Exiba os resultados e verifique se os enriquecimentos de mensagem estão sendo aplicados às mensagens de destino.

Pré-requisitos

Não há outros pré-requisitos para o portal do Azure.

Criar um segundo contêiner em sua conta de armazenamento

Na primeira parte deste tutorial, você criou uma conta de armazenamento e um contêiner para mensagens roteadas. Agora você deve criar um segundo contêiner para mensagens enriquecidas.

  1. No portal do Azure, procure contas de armazenamento.

  2. Selecione a conta que criou anteriormente.

  3. No menu da conta de armazenamento, selecione Contêineres na seção Armazenamento de dados.

  4. Selecione Contêiner para criar o novo contêiner.

    Captura de tela da criação de um contêiner de armazenamento.

  5. Nomeie o contêiner enrichede selecione Criar.

Encaminhar mensagens para um segundo ponto de extremidade

Crie um segundo ponto de extremidade e rota para as mensagens enriquecidas.

  1. No portal do Azure, vá para seu hub IoT.

  2. No menu de recursos em Configurações do Hub, selecione Roteamento de mensagens e, em seguida, selecione Adicionar.

    Captura de tela que mostra a localização do botão Adicionar para adicionar uma nova rota em seu hub IoT.

  3. Na guia Ponto de extremidade, crie um ponto de extremidade de armazenamento fornecendo as seguintes informações:

    Parâmetro Value
    Tipo de ponto final Selecione Armazenamento.
    Nome do ponto final Introduzir ContosoStorageEndpointEnriched.
    Contêiner de armazenamento do Azure Selecione Escolher um contêiner. Siga as instruções para selecionar a conta de armazenamento e o contêiner enriquecido que você criou na seção anterior.
    Encoding (Codificação) Selecione JSON. Se este campo estiver acinzentado, a região da sua conta de armazenamento não suporta JSON. Nesse caso, continue com o AVRO padrão.

    Captura de tela mostrando a seleção de um contêiner para um ponto de extremidade.

  4. Aceite os valores padrão para o restante dos parâmetros e selecione Criar + próximo.

  5. Continue criando a nova rota, agora que você adicionou o ponto de extremidade de armazenamento. Forneça as seguintes informações para a nova rota:

    Parâmetro Valor
    Nome ContosoStorageRouteEnriquecido
    Origem de dados Verifique se Mensagens de Telemetria de Dispositivo está selecionado na lista suspensa.
    Ativar rota Verifique se este campo está definido como enabled.
    Consulta de roteamento Insira level="storage" como a cadeia de caracteres de consulta.

    Captura de tela mostrando como salvar informações de consulta de roteamento.

  6. Selecione Criar + adicionar enriquecimentos.

Adicionar enriquecimento de mensagem ao novo ponto de extremidade

Crie três enriquecimentos de mensagem que serão roteados para o contêiner de armazenamento enriquecido .

  1. Na guia Enriquecimento do assistente Adicionar uma rota, adicione três enriquecimentos de mensagem para as mensagens que vão para o ponto de extremidade do contêiner de armazenamento chamado enriquecido.

    Adicione estes valores como enriquecimento de mensagem para o ponto de extremidade ContosoStorageEndpointEnriquecido:

    Nome Valor
    myIotHub $hubname
    Localização do dispositivo $twin.tags.location (assume que o gémeo do dispositivo tem uma etiqueta de localização)
    ID do cliente 6ce345b8-1e4a-411e-9398-d34587459a3a

    Quando terminar, os seus enriquecimentos deverão ser semelhantes a esta imagem:

    Captura de ecrã da tabela com todos os enriquecimentos adicionados.

  2. Selecione Adicionar para adicionar o enriquecimento da mensagem.

Agora você tem enriquecimento de mensagens configurado para todas as mensagens roteadas para o ponto de extremidade criado para mensagens enriquecidas. Se não quiser adicionar uma etiqueta de localização ao gémeo do dispositivo, pode saltar para a secção Testar enriquecimento de mensagens para continuar o tutorial.

Adicionar etiqueta de localização ao gémeo do dispositivo

Um dos enriquecimentos de mensagem configurados em seu hub IoT especifica uma chave de DeviceLocation com seu valor determinado pelo seguinte caminho gêmeo do dispositivo: $twin.tags.location. Se o seu dispositivo twin não tiver uma etiqueta de localização, o caminho gémeo, $twin.tags.locationserá carimbado como uma cadeia de caracteres para a chave DeviceLocation nos enriquecimentos de mensagem.

Siga estes passos para adicionar uma etiqueta de localização ao gémeo do seu dispositivo:

  1. Navegue até seu hub IoT no portal do Azure.

  2. Selecione Dispositivos no menu de navegação do hub IoT e, em seguida, selecione o dispositivo.

  3. Selecione a guia Gêmeo dispositivo na parte superior da página do dispositivo e adicione a seguinte linha imediatamente antes da chave de fechamento na parte inferior do dispositivo gêmeo. Em seguida, selecione Guardar.

      , "tags": {"location": "Plant 43"}
    

    Captura de ecrã a mostrar a adição da etiqueta de localização ao gémeo do dispositivo no portal do Azure.

Gorjeta

Aguarde cerca de cinco minutos antes de continuar para a próxima seção. Pode levar até esse tempo para que as atualizações do gêmeo do dispositivo sejam refletidas nos valores de enriquecimento da mensagem.

Para saber mais sobre como os caminhos gêmeos de dispositivo são tratados com enriquecimento de mensagens, consulte Limitações de enriquecimento de mensagens. Para saber mais sobre gêmeos de dispositivo, consulte Compreender e usar gêmeos de dispositivo no Hub IoT.

Enriquecimento de mensagens de teste

Agora que os enriquecimentos de mensagens estão configurados para o ponto de extremidade ContosoStorageEndpointEnriquecido , execute o aplicativo de dispositivo simulado para enviar mensagens para o hub IoT. Neste ponto, o roteamento de mensagens foi configurado da seguinte maneira:

  • As mensagens roteadas para o ponto de extremidade de armazenamento criado na primeira parte do tutorial não serão enriquecidas e armazenadas no contêiner de armazenamento criado em seguida.

  • As mensagens roteadas para o ponto de extremidade de armazenamento ContosoStorageEndpointEnriched serão enriquecidas e armazenadas no contêiner de armazenamento enriquecido.

Se você ainda não estiver executando o aplicativo de console SimulatedDevice na primeira parte deste tutorial, execute-o novamente:

Gorjeta

Se você estiver seguindo as etapas da CLI do Azure para este tutorial, execute o código de exemplo em uma sessão separada. Dessa forma, você pode permitir que o código de exemplo continue em execução enquanto segue o restante das etapas da CLI.

  1. Na pasta de exemplo, navegue até a /iot-hub/Tutorials/Routing/SimulatedDevice/ pasta.

  2. As definições de variáveis que você atualizou antes ainda devem ser válidas, mas, se não, edite-as Program.cs no arquivo:

    1. Encontre as definições de variáveis na parte superior da classe Program . Atualize as seguintes variáveis com suas próprias informações:

      • s_myDeviceId: O ID do dispositivo que você atribuiu ao registrar o dispositivo no hub IoT.
      • s_iotHubUri: O nome do host do seu hub IoT, que assume o formato IOTHUB_NAME.azure-devices.net.
      • s_deviceKey: A chave primária do dispositivo encontrada nas informações de identidade do dispositivo.
    2. Guarde e feche o ficheiro.

  3. Execute o código de exemplo:

    dotnet run
    

Depois de deixar o aplicativo de console para ser executado por alguns minutos, visualize os dados:

  1. No portal do Azure, navegue para a sua conta de armazenamento.

  2. Selecione Navegador de armazenamento no menu de navegação. Selecione Contêineres de Blob para ver os dois contêineres que você criou ao longo destes tutoriais.

    Captura de tela mostrando os contêineres de blob na conta de armazenamento.

As mensagens no contêiner chamado enriquecido têm o enriquecimento de mensagem incluído nas mensagens. As mensagens no contêiner criado anteriormente têm as mensagens brutas sem enriquecimento. Analise detalhadamente o contêiner enriquecido até chegar à parte inferior e, em seguida, abra o arquivo de mensagem mais recente. Em seguida, faça o mesmo para o outro recipiente para verificar se um está enriquecido e outro não.

Quando você olha para as mensagens que foram enriquecidas, você deve ver "myIotHub" com o nome do hub, o local e o ID do cliente, assim:

{
  "EnqueuedTimeUtc":"2019-05-10T06:06:32.7220000Z",
  "Properties":
  {
    "level":"storage",
    "myIotHub":"{your hub name}",
    "DeviceLocation":"Plant 43",
    "customerID":"6ce345b8-1e4a-411e-9398-d34587459a3a"
  },
  "SystemProperties":
  {
    "connectionDeviceId":"Contoso-Test-Device",
    "connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
    "connectionDeviceGenerationId":"636930642531278483",
    "enqueuedTime":"2019-05-10T06:06:32.7220000Z"
  },"Body":"eyJkZXZpY2VJZCI6IkNvbnRvc28tVGVzdC1EZXZpY2UiLCJ0ZW1wZXJhdHVyZSI6MjkuMjMyMDE2ODQ4MDQyNjE1LCJodW1pZGl0eSI6NjQuMzA1MzQ5NjkyODQ0NDg3LCJwb2ludEluZm8iOiJUaGlzIGlzIGEgc3RvcmFnZSBtZXNzYWdlLiJ9"
}

Clean up resources (Limpar recursos)

Para remover todos os recursos criados em ambas as partes deste tutorial, exclua o grupo de recursos. Esta ação também elimina todos os recursos contidos no grupo. Se não quiser excluir todo o grupo de recursos, selecione recursos individuais para excluir.

  1. No portal do Azure, navegue até o grupo de recursos que contém o hub IoT e a conta de armazenamento para este tutorial.
  2. Revise todos os recursos que estão no grupo de recursos para determinar quais você deseja limpar.
    • Se quiser excluir todo o recurso, selecione Excluir grupo de recursos.
    • Se você quiser excluir apenas determinados recursos, use as caixas de seleção ao lado de cada nome de recurso para selecionar os que deseja excluir. Em seguida, selecione Eliminar.

Próximos passos

Neste tutorial, você configurou e testou enriquecimentos de mensagens para mensagens do Hub IoT à medida que elas são roteadas para um ponto de extremidade.

Para obter mais informações sobre enriquecimento de mensagens, consulte Visão geral de enriquecimento de mensagens.

Para saber mais sobre o Hub IoT, continue para o próximo tutorial.