Tutorial: Usar os enriquecimentos de mensagens do Hub IoT do Azure

Os enriquecimentos de mensagens são a capacidade do Hub IoT do Azure de aplicar um carimbo de data/hora às mensagens com informações adicionais antes que elas sejam enviadas para o ponto de extremidade designado. Um motivo para usar os enriquecimentos de mensagens é incluir dados que possam ser usados para simplificar o processamento downstream. Por exemplo, enriquecer mensagens do dispositivo com uma marca de dispositivo gêmeo pode reduzir a carga em clientes para fazer chamadas à API do dispositivo gêmeo a fim de obter essas informações. Para obter mais informações, confira Visão geral dos enriquecimentos 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 os enriquecimentos 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 manter as mensagens enriquecidas e uma rota de mensagem para enviá-las para lá. Depois que as configurações do roteamento e dos enriquecimentos de mensagens forem concluídas, você usará um aplicativo para enviar mensagens ao hub IoT. Em seguida, o hub roteia-as para os dois contêineres de armazenamento. Somente as mensagens enviadas ao ponto de extremidade do contêiner de armazenamento enriquecido são enriquecidas.

Neste tutorial, você executa as seguintes tarefas:

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

Pré-requisitos

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

Crie 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, pesquise as Contas de armazenamento.

  2. Selecione a conta criada 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 enriched e selecione Criar.

Rotear mensagens para um segundo endpoint

Crie um segundo endpoint e roteie as mensagens enriquecidas.

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

  2. No menu de recursos, em configurações do Hub, selecione Roteamento de mensagens e então selecione Adicionar.

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

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

    Parâmetro Valor
    Tipo de ponto de extremidade Selecione Armazenamento.
    Nome do ponto de extremidade Insira ContosoStorageEndpointEnriched.
    Contêiner de Armazenamento do Azure Selecione Escolher um contêiner. Siga os prompts para selecionar a conta de armazenamento e o contêiner enriquecido que você criou na seção anterior.
    Codificação Selecione JSON. Se esse campo estiver esmaecido, a região da conta de armazenamento não dá suporte a 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 + avançar.

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

    Parâmetro Valor
    Nome ContosoStorageRouteEnriched
    Fonte de dados Verifique se a opção Mensagens de Telemetria de Dispositivo está selecionada na lista suspensa.
    Habilitar rota Verifique se esse campo está definido como enabled.
    Consulta de roteamento insira level="storage" como a cadeia de caracteres de consulta.

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

  6. Selecione Criar + adicionar enriquecimentos.

Adicionar enriquecimento de mensagens ao novo ponto de extremidade

Crie três enriquecimentos de mensagens 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 mensagens às mensagens que vão para o ponto de extremidade do contêiner de armazenamento chamado enriquecido.

    Adicione esses valores como enriquecimentos de mensagens para o ponto de extremidade ContosoStorageEndpointEnriched:

    Nome Valor
    myIotHub $hubname
    DeviceLocation $twin.tags.location (assume que o dispositivo gêmeo tem uma marca de localização)
    customerID 6ce345b8-1e4a-411e-9398-d34587459a3a

    Quando você terminar, os enriquecimentos serão semelhantes a esta imagem:

    Captura de tela da tabela com todos os enriquecimentos adicionados.

  2. Selecione Adicionar para adicionar os enriquecimentos de mensagem.

Agora você tem enriquecimentos de mensagens configurados para todas as mensagens roteadas para o endpoint que você criou para mensagens enriquecidas. Se você não quiser adicionar uma etiqueta de localização ao dispositivo gêmeo, pule para a seção Enriquecimentos de mensagens de teste para continuar o tutorial.

Adicionar uma marca de localização ao dispositivo gêmeo

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

Siga estas etapas para adicionar uma etiqueta de localização ao gêmeo do seu dispositivo:

  1. Vá ao Hub IoT no portal do Azure.

  2. Selecione Dispositivos no menu de navegação do Hub IoT e depois selecione o dispositivo.

  3. Selecione a guia Dispositivo gêmeo na parte superior da página do dispositivo e adicione a linha a seguir logo antes da chave de fechamento na parte inferior do dispositivo gêmeo. Em seguida, selecione Salvar.

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

    Captura de tela da adição de marca de localização ao dispositivo gêmeo no portal do Azure.

Dica

Aguarde cerca de cinco minutos para continuar na próxima seção. Esse é o tempo máximo necessário para que as atualizações do dispositivo gêmeo sejam refletidas nos valores de enriquecimento de mensagem.

Para saber mais sobre como os caminhos do dispositivo gêmeo são tratados com enriquecimentos de mensagens, confira Limitações de enriquecimentos de mensagens. Para saber mais sobre o conceito de dispositivos gêmeos, confira Compreender e usar dispositivos gêmeos no Hub IoT.

Testar enriquecimentos de mensagens

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

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

  • 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 da primeira parte deste tutorial, execute-o novamente:

Dica

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 maneira, você permite 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 pasta /iot-hub/Tutorials/Routing/SimulatedDevice/.

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

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

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

  3. Execute o código de exemplo:

    dotnet run
    

Depois de deixar o aplicativo de console em execução por alguns minutos, visualize os dados:

  1. No Portal do Azure, navegue até 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 desses tutoriais.

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

As mensagens do contêiner chamadas enriquecidas têm os enriquecimentos de mensagens incluídos nas mensagens. As mensagens no contêiner que você criou anteriormente têm as mensagens brutas sem enriquecimentos. Faça uma busca detalhada no contêiner enriquecido até chegar ao final e abra o arquivo de mensagem mais recente. Em seguida, faça o mesmo para o outro contêiner para verificar se um é enriquecido e o outro não.

Ao observar as mensagens que foram enriquecidas, você deverá 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"
}

Limpar recursos

Para remover todos os recursos que você criou em ambas as partes deste tutorial, exclua o grupo de recursos. Essa ação também exclui todos os recursos contidos no grupo. Se você não quiser excluir todo o grupo de recursos, poderá selecionar recursos individuais para excluir.

  1. No portal do Azure, navegue até o grupo de recursos que contenha o hub IoT e a conta de armazenamento deste tutorial.
  2. Examine todos os recursos que estão no grupo de recursos para determinar quais deles você quer limpar.
    • Se você quiser excluir todos os recursos, selecione Excluir grupo de recursos.
    • Caso queira excluir apenas determinado recurso, use as caixas de seleção ao lado de cada nome de recurso para escolher aqueles que deseja excluir. Em seguida, selecione Excluir.

Próximas etapas

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

Para obter mais informações sobre os enriquecimentos de mensagens, confira Visão geral dos enriquecimentos de mensagens.

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