Tutorial: Encaminhar mensagens MQTT na Grade de Eventos do Azure para o Azure Functions usando tópicos personalizados - Portal do 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 subscrição do Azure, pode inscrever-se para obter uma avaliação gratuita.

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

Siga as instruções de Criar uma função do Azure usando o Visual Studio Code, mas use o Gatilho de Grade de Eventos do Azure em vez de usar o Gatilho HTTP. Você deve 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ê usa essa função do Azure como um manipulador de eventos para a assinatura de um tópico posteriormente neste tutorial.

Nota

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

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

Crie um tópico Grade de Eventos. Consulte Criar um tópico personalizado usando o portal. Ao criar o tópico Grade de Eventos, na guia Avançado , para Esquema de Eventos, selecione Esquema de Eventos na Nuvem v1.0.

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

Nota

Use o esquema de eventos na nuvem em todos os lugares neste tutorial.

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

Nesta etapa, você cria uma assinatura para o tópico Grade de Eventos usando a função do Azure criada anteriormente.

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

    Captura de ecrã que mostra a página Subscrições de Eventos para um tópico.

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

    1. Insira um nome para a assinatura do evento.

    2. Para Esquema de eventos, selecione Esquema de eventos na nuvem 1.0.

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

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

      Captura de ecrã que mostra a página Criar subscrição de eventos.

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

    1. Em Assinatura, selecione sua assinatura do Azure.

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

    3. Para o aplicativo Função, selecione o aplicativo Funções que tem a função.

    4. Em Slot, selecione Produção.

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

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

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

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

  5. Na página Subscrições de Eventos, deverá ver a subscrição que criou.

Criar namespace, clientes, espaços de tópico e associações de permissão

Siga as instruções de Guia de início rápido: publique e assine mensagens MQTT usando um namespace de grade de eventos com o portal do Azure para:

  1. Crie um namespace Event Grid.
  2. Crie dois clientes.
  3. Crie um espaço de tópico.
  4. Crie associações de permissão de editor e assinante.
  5. Teste usando o aplicativo MQTTX para confirmar se os clientes são capazes de enviar e receber mensagens.

Habilitar identidade gerenciada para o namespace

Nesta seção, você habilita a identidade gerenciada atribuída ao sistema para o namespace Grade de Eventos. Em seguida, conceda à identidade a permissão de envio para o tópico personalizado da Grade de Eventos criado anteriormente para que ele possa rotear a mensagem para o tópico personalizado. Para fazer isso, adicione 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 que mostra o Namespace da Grade de Eventos com a guia Identidade selecionada.

  2. Navegue até o tópico personalizado Grade de eventos para o tópico personalizado Grade de eventos.

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

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

    Captura de ecrã que mostra a página Controlo de acesso.

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

    Captura de ecrã 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 escolha Selecionar membros.

    Captura de ecrã que mostra a página Membros do assistente Adicionar atribuição de função.

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

    1. Selecione a sua subscrição do Azure.

    2. Em Identidade gerenciada, selecione Namespace da grade de eventos.

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

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

      Captura de tela que mostra 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 Rever + atribuir, reveja as definições e, em seguida, selecione Rever + atribuir na parte inferior da página.

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

Nesta etapa, você configura o roteamento para o namespace Grade de Eventos para que as mensagens recebidas sejam roteadas para o tópico personalizado criado.

  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. Em Tipo de tópico, selecione Tópico personalizado.

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

  5. Em Identidade gerenciada para entrega, selecione Sistema atribuído.

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

    Captura de tela que mostra a página Roteamento de um namespace.

Enviar mensagens MQTT de teste usando MQTTX

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

Siga as instruções do artigo Publicar, inscrever mensagens usando o aplicativo MQTTX para enviar algumas mensagens de teste para o namespace Event Grid.

Aqui está o fluxo dos eventos ou mensagens:

  1. O MQTTX envia mensagens para o espaço de tópico do namespace Event Grid.

  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 log para verificar se a função recebeu o evento.

    Captura de tela que mostra a página Fluxo de log para uma função do Azure.

Próximo passo

Veja exemplos de código neste repositório GitHub.