Partilhar via


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

Neste tutorial, você roteia mensagens MQTT recebidas por um namespace da Grade de Eventos do Azure para uma função do Azure usando um tópico personalizado da Grade de Eventos.

Se não tiver uma subscrição do Azure, pode inscrever-se para uma avaliação gratuita .

Criar uma função do Azure usando o gatilho Event Grid

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.

Importante

Crie todos os recursos na mesma região.

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.

Observação

Este tutorial foi testado com uma função do Azure que usa a stack de runtime .NET 8.0 (isolada).

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

Crie um tópico do Event Grid. Consulte Criar um tópico personalizado usando o portal do Azure. 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 ecrã que mostra a página Avançadas do assistente 'Criar Tópico'.

Observação

Use Cloud Event Schema v1.0 em todo este tutorial.

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

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

  1. Na página Tópico da Grade de Eventos, selecione Assinaturas.

    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 Event Schema, selecione Cloud Event Schema 1.0.

    3. Para Tipo de Ponto de Extremidade, selecione Função do Azure.

    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. Em Função, selecione sua Função do Azure.

    6. Em seguida, selecione Confirmar seleção.

      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 espaço de nomes do 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 Event Grid. Em seguida, ele pode encaminhar a mensagem para o tópico personalizado. Para ativá-lo, adicione a identidade gerida à função Remetente de Dados do Event Grid no tópico personalizado.

  1. Na página Event Grid Namespace, selecione Identidade. Selecione Ativado e, em seguida, Guardar.

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

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

  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.

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

  6. Em Adicionar atribuição de função, na página Membros , selecione Identidade gerenciada e escolha Selecionar membros.

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

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

    1. Selecione sua assinatura 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.

      Captura de tela que mostra a página Selecionar identidades gerenciadas.

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

  9. Na página Rever + atribuir , reveja as definições e, em seguida, selecione Rever + atribuir.

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

Nesta seção, configure o roteamento para o namespace Grade de Eventos para que as mensagens recebidas sejam roteadas para o tópico personalizado que você criou.

  1. Na página Namespace do Grid de Eventos, selecione Roteamento.

  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.

    Captura de ecrã 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 de Publicar e subscrever usando a aplicação MQTTX para enviar algumas mensagens de teste para o namespace do 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