Tutorial: Encaminhar mensagens MQTT na Grade de Eventos do Azure para o Azure Functions usando tópicos personalizados - portal do Microsoft Azure

Neste tutorial, você aprenderá a rotear mensagens MQTT recebidas por um namespace da Grade de Eventos do Azure para uma função do Azure por meio de um tópico personalizado da Grade de Eventos, seguindo estas etapas:

Se não tiver uma assinatura do Azure, você poderá inscrever-se em uma avaliação gratuita.

Criar uma função do Azure usando o gatilho da Grade de Eventos

Siga as instruções de Criar uma função Azure usando o Visual Studio Code, mas use o Gatilho da Grade de Eventos do Azure em vez de usar o Gatilho HTTP. Você deverá ver um código semelhante ao exemplo a seguir:

using System;
using Azure.Messaging;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace Company.Function
{
    public class MyEventGridTriggerFunc
    {
        private readonly ILogger<MyEventGridTriggerFunc> _logger;

        public MyEventGridTriggerFunc(ILogger<MyEventGridTriggerFunc> logger)
        {
            _logger = logger;
        }

        [Function(nameof(MyEventGridTriggerFunc))]
        public void Run([EventGridTrigger] CloudEvent cloudEvent)
        {
            _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
        }
    }
}

Você usará essa função do Azure como um manipulador de eventos para a assinatura de um tópico mais adiante neste tutorial.

Observação

  • Crie todos os recursos na mesma região.
  • Este tutorial foi testado com uma função do Azure que usa a pilha de runtime do .NET 8.0 (isolada).

Criar um tópico da Grade de Eventos (tópico personalizado)

Crie um tópico da Grade de Eventos. Consulte Criar um tópico personalizado usando o portal. Quando você criar o tópico da Grade de Eventos, na guia Avançado, em Esquema de Eventos, selecione Esquema de Eventos na Nuvem v1.0.

Captura de tela mostrando a página Avançado do assistente Criar tópico.

Observação

Use o Esquema de evento na nuvem em todos os lugares neste tutorial.

Adicione uma assinatura ao tópico usando a função

Nesta etapa, crie uma assinatura do tópico da Grade de Eventos usando a função do Azure criada anteriormente.

  1. Na página de tópico da Grade de Eventos, selecione Assinatura na barra de navegação esquerda.

    Captura de tela mostrando a página Assinaturas de Eventos de um tópico.

  2. Na página Criar assinatura de evento, siga estas etapas:

    1. Insira um nome para a assinatura de evento.

    2. Em Esquema de evento, selecione Esquema de Eventos de Nuvem 1.0.

    3. Em Tipo de ponto de extremidade, selecione Azure Functions.

    4. Em seguida, selecione Configurar um ponto de extremidade.

      Captura de tela mostrando a página Criar assinatura de evento.

  3. Na página Selecionar função do Azure, siga estas etapas:

    1. Para Assinatura, selecione sua Assinatura do Azure.

    2. Para Grupo de recursos, selecione o grupo de recursos que possui sua função Azure.

    3. Para o Aplicativo de Funções, selecione o Aplicativo de Funções que tenha a função.

    4. Para Slot, selecione Produção.

    5. Para Função, selecione sua função Azure.

    6. Em seguida, selecione Confirmar seleção na parte inferior da página.

      Captura de tela mostrando a página Selecionar função do Azure.

  4. Na página Criar Assinatura de Evento, selecione Criar.

  5. Na página Assinaturas de eventos, você deverá ver a assinatura que criou.

Criar namespaces, clientes, espaços de tópicos e associações de permissões

Siga as instruções do Início Rápido: Publicar e assinar mensagens MQTT usando um namespace da Grade de Eventos com o portal do Microsoft Azure para:

  1. Criar um namespace da Grade de Eventos.
  2. Criar dois clientes.
  3. Criar um espaço de tópico.
  4. Criar vinculações de permissão de fornecedor e assinante.
  5. Testar usando o aplicativo MQTTX para confirmar que os clientes podem enviar e receber mensagens.

Habilitar a identidade gerenciada para o namespace

Nesta seção, habilite a identidade gerenciada atribuída pelo sistema para o namespace da Grade de Eventos. Em seguida, conceda à identidade a permissão de envio para o tópico personalizado da Grade de Eventos que você criou anteriormente para que ela possa encaminhar mensagens para o tópico personalizado. Você faz isso adicionando a identidade gerenciada à função Remetente de Dados da Grade de Eventos no tópico personalizado.

  1. Na página Namespace da Grade de Eventos, selecione Identidade no menu de navegação à esquerda.

    Captura de tela mostrando o Namespace da Grade de Eventos com a guia Identidade selecionada.

  2. Navegue até o Tópico do Event Grid para o seu tópico personalizado da Grade de Eventos.

  3. Selecione Controle de acesso na barra de navegação à esquerda.

  4. Na página Controle de acesso, selecione Adicionar e, em seguida, Adicionar atribuição de função.

    Captura de tela mostrando a página Controle de Acesso.

  5. Na página Função do assistente de Adicionar atribuição de função, selecione a função Remetente de Dados da Grade de Eventos e selecione Avançar na parte inferior da página.

    Captura de tela que mostra a página **Função** do assistente **Adicionar atribuição de função**.

  6. Na página Membros do assistente Adicionar atribuição de função, selecione Identidade gerenciada e, em seguida, Selecionar membros.

    Captura de tela mostrando a página Membros do assistente Adicionar atribuição de função.

  7. Na página Selecionar identidades gerenciadas, siga estas etapas:

    1. Selecione sua assinaturado Azure.

    2. Para Identidade gerenciada, selecione Namespace da Grade de Eventos.

    3. Selecione a identidade gerenciada que tem o mesmo nome do namespace da Grade de Eventos.

    4. Escolha Selecionar na parte inferior da página.

      Captura de tela mostrando a página Selecionar identidades gerenciadas.

  8. Na página Adicionar atribuição de função, selecione Avançar na parte inferior da página.

  9. Na página Revisar + atribuir, revise as configurações e selecione Revisar + atribuir na parte inferior da página.

Configurar mensagens de roteamento para a função do Azure por meio de um tópico personalizado

Nesta etapa, configure o roteamento do namespace da Grade de Eventos para que as mensagens que ele recebe sejam encaminhadas para o tópico personalizado que você criou.

  1. Na página Namespace da Grade de Eventos, selecione Roteamento na barra de navegação à esquerda.

  2. Na página Roteamento, selecione Habilitar roteamento.

  3. Para Tipo de tópico, selecione Tópico personalizado.

  4. Para Tópico, selecione o tópico personalizado que você criou para este tutorial.

  5. Para identidade gerenciada para entrega, selecione Atribuído pelo Sistema.

  6. Selecione Aplicar na parte inferior da página.

    Captura de tela mostrando a página Roteamento de um namespace.

Enviar mensagens MQTT de teste usando o MQTTX

Envie mensagens MQTT de teste para o namespace e confirme se a função as recebe.

Siga as instruções do artigo Publicar, assinar mensagens usando o aplicativo MQTTX para enviar algumas mensagens de teste para o namespace da Grade de Eventos.

Aqui está o fluxo dos eventos ou mensagens:

  1. O MQTTX envia mensagens para o espaço de tópico do namespace da Grade de Eventos.

  2. As mensagens são encaminhadas para o tópico personalizado que você configurou.

  3. As mensagens são encaminhadas para a assinatura do evento, que é a função do Azure.

  4. Use o recurso de registro em log para verificar se a função recebeu o evento.

    Captura de tela mostrando a página de fluxo de logs de uma função do Azure.

Próxima etapa

Veja exemplos de código em este repositório GitHub.