Tutorial: Enrutamiento de mensajes MQTT en Azure Event Grid a Azure Functions mediante temas personalizados: Azure Portal
En este tutorial, aprenderá a enrutar los mensajes MQTT recibidos por un espacio de nombres de Azure Event Grid a una función de Azure a través de un tema personalizado de Event Grid siguiendo estos pasos:
Si no tiene ninguna suscripción de Azure, puede registrarse para obtener una evaluación gratuita.
Creación de una función de Azure mediante un desencadenador de Event Grid
Siga las instrucciones de Creación de una función de Azure mediante Visual Studio Code, pero use el Desencadenador de Azure Event Grid en lugar de usar el Desencadenador de HTTP. Deberías ver un código similar al ejemplo siguiente:
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);
}
}
}
Esta función de Azure se usa como controlador de eventos para la suscripción de un tema más adelante en este tutorial.
Nota:
- Crea todos los recursos en la misma región.
- Este tutorial se ha probado con una función de Azure que usa la pila en tiempo de ejecución de .NET 8.0 (aislado).
Creación de un tema de Event Grid (tema personalizado)
Crear un tema de Event Grid. Consulte Creación de un tema personalizado mediante el portal. Al crear el tema de Event Grid, en la pestaña Avanzado, para Esquema de eventos, seleccione Esquema de eventos en la nube v1.0.
Nota:
Usa el Esquema de eventos en la nube para todo este tutorial.
Adición de una suscripción al tema mediante la función
En este paso, creará una suscripción al tema de Event Grid mediante la función de Azure que creó anteriormente.
En la página de tema de Event Grid, seleccione Suscripciones en la barra de navegación izquierda.
En la página Crear suscripción de eventos, realice los siguientes pasos:
En la página Seleccionar la función de Azure, realice estos pasos:
En Suscripción, seleccione su suscripción de Azure.
Para Grupo de recursos, seleccione el grupo de recursos que contiene la función de Azure.
Para Aplicación de funciones, seleccione la Aplicación de funciones que tiene la función.
Para Ranura, seleccione Producción.
Para Función, seleccione la función de Azure.
Posteriormente, seleccione Confirmar selección en la parte inferior de la página.
En la página Crear suscripción de eventos, seleccione Crear.
En la página Suscripciones de eventos, debería ver la suscripción que creó.
Crear espacios de nombres, clientes, espacios de temas y enlaces de permisos
Siga las instrucciones de Inicio rápido: Publicación y suscripción a mensajes MQTT en el espacio de nombres de Event Grid con Azure Portal para:
- Crear un espacio de nombres de Event Grid.
- Crear dos clientes.
- Crear un espacio de temas.
- Crear enlaces de permisos de publicador y suscriptor.
- Probar el uso de la aplicación MQTTX para confirmar que los clientes pueden enviar y recibir mensajes.
Habilitar la identidad administrada para el espacio de nombres
En esta sección, habilitará una identidad administrada asignada por el sistema en el espacio de nombres de Event Grid. A continuación, conceda a la identidad permiso para enviar al tema personalizado de Event Grid que creó anteriormente para que pueda enrutar el mensaje al tema personalizado. Para ello, agregue la identidad administrada al rol de Remitente de datos de Event Grid en el tema personalizado.
En la página Espacio de nombres de Event Grid, seleccione Identidad en el menú de navegación izquierdo.
Vaya al Tema de Event Grid para el tema personalizado de Event Grid.
Seleccione Control de acceso en la barra de navegación izquierda.
En la página Control de acceso, seleccione Agregar y, a continuación, seleccione Agregar asignación de roles.
En la página Rol del asistente para Agregar asignación de roles, seleccione el rol de Remitente de datos de Event Grid y seleccione Siguiente en la parte inferior de la página.
En la página Miembros del asistente para Agregar asignación de roles, seleccione Identidad administrada y, a continuación, elija Seleccionar miembros.
En la página Seleccionar identidades administradas, realice estos pasos:
En la página Agregar asignación de roles, seleccione Siguiente en la parte inferior de la página.
En la página Revisar y asignar, revisar la configuración y, a continuación, seleccione Revisar y asignar en la parte inferior de la página.
Configuración del enrutamiento de mensajes a la función de Azure a través de un tema personalizado
En este paso, configurará el enrutamiento para el espacio de nombres de Event Grid para que los mensajes que recibe se enruten al tema personalizado que creó.
En la página Espacio de nombres de Event Grid, seleccione Enrutamiento en la barra de navegación izquierda.
En la página Enrutamiento, seleccione Habilitar enrutamiento.
Para Tipo de tema, seleccione Tema personalizado.
Para Tema, seleccione el tema personalizado que creó para este tutorial.
Para Identidad administrada para la entrega, seleccione Asignada por el sistema.
Seleccione Aplicar en la parte inferior de la página.
Envío de mensajes MQTT de prueba mediante MQTTX
Envía mensajes MQTT de prueba al espacio de nombres y confirma que la función las recibe.
Sigue las instrucciones del artículo Publicación y suscripción de mensajes mediante la aplicación MQTTX para enviar algunos mensajes de prueba al espacio de nombres de Event Grid.
Este es el flujo de los eventos o mensajes:
MQTTX envía mensajes al espacio de temas del espacio de nombres de Event Grid.
Los mensajes se enrutan al tema personalizado que configuraste.
Los mensajes se reenvían a la suscripción de eventos, que es la función de Azure.
Usa la característica de registro para comprobar que la función ha recibido el evento.
Paso siguiente
Puedes ver ejemplos de código en este repositorio de GitHub.