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.
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.
Na página de tópico da Grade de Eventos, selecione Assinatura na barra de navegação esquerda.
Na página Criar assinatura de evento, siga estas etapas:
Na página Selecionar função do Azure, siga estas etapas:
Para Assinatura, selecione sua Assinatura do Azure.
Para Grupo de recursos, selecione o grupo de recursos que possui sua função Azure.
Para o Aplicativo de Funções, selecione o Aplicativo de Funções que tenha a função.
Para Slot, selecione Produção.
Para Função, selecione sua função 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 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:
- Criar um namespace da Grade de Eventos.
- Criar dois clientes.
- Criar um espaço de tópico.
- Criar vinculações de permissão de fornecedor e assinante.
- 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.
Na página Namespace da Grade de Eventos, selecione Identidade no menu de navegação à esquerda.
Navegue até o Tópico do Event Grid para o seu tópico personalizado da Grade de Eventos.
Selecione Controle de acesso na barra de navegação à esquerda.
Na página Controle de acesso, selecione Adicionar e, em seguida, Adicionar atribuição de função.
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.
Na página Membros do assistente Adicionar atribuição de função, selecione Identidade gerenciada e, em seguida, 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 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.
Na página Namespace da Grade de Eventos, selecione Roteamento na barra de navegação à esquerda.
Na página Roteamento, selecione Habilitar roteamento.
Para Tipo de tópico, selecione Tópico personalizado.
Para Tópico, selecione o tópico personalizado que você criou para este tutorial.
Para identidade gerenciada para entrega, selecione Atribuído pelo Sistema.
Selecione Aplicar na parte inferior da página.
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:
O MQTTX envia mensagens para o espaço de tópico do namespace da Grade de Eventos.
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 registro em log para verificar se a função recebeu o evento.
Próxima etapa
Veja exemplos de código em este repositório GitHub.