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.
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.
Na página de tópicos da Grade de Eventos, selecione Assinaturas na barra de navegação esquerda.
Na página Criar assinatura de evento, siga estas etapas:
Na página Selecionar função do Azure, execute estas etapas:
Em Assinatura, selecione sua assinatura do Azure.
Para Grupo de recursos, selecione o grupo de recursos que tem sua função do Azure.
Para o aplicativo Função, selecione o aplicativo Funções que tem a função.
Em Slot, selecione Produção.
Para Função, selecione sua função do Azure.
Em seguida, selecione Confirmar seleção na parte inferior da página.
Na página Criar Assinatura de Evento , selecione Criar.
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:
- Crie um namespace Event Grid.
- Crie dois clientes.
- Crie um espaço de tópico.
- Crie associações de permissão de editor e assinante.
- 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.
Na página Namespace da Grade de Eventos , selecione Identidade no menu de navegação à esquerda.
Navegue até o tópico personalizado Grade de eventos para o tópico personalizado Grade de eventos.
Selecione Controle de acesso na barra de navegação esquerda.
Na página Controlo de acesso , selecione Adicionar e, em seguida, selecione Adicionar atribuição de função.
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.
Na página Membros do assistente Adicionar atribuição de função, selecione Identidade gerenciada e escolha Selecionar membros.
Na página Selecionar identidades gerenciadas, siga estas etapas:
Na página Adicionar atribuição de função, selecione Avançar na parte inferior da página.
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.
Na página Namespace da Grade de Eventos , selecione Roteamento na barra de navegação esquerda.
Na página Roteamento, selecione Habilitar roteamento.
Em Tipo de tópico, selecione Tópico personalizado.
Em Tópico, selecione o tópico personalizado que você criou para este tutorial.
Em Identidade gerenciada para entrega, selecione Sistema atribuído.
Selecione Aplicar na parte inferior da página.
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:
O MQTTX envia mensagens para o espaço de tópico do namespace Event Grid.
As mensagens são encaminhadas para o tópico personalizado que você configurou.
As mensagens são encaminhadas para a assinatura do evento, que é a função do Azure.
Use o recurso de log para verificar se a função recebeu o evento.
Próximo passo
Veja exemplos de código neste repositório GitHub.