Tutorial: Respuesta a eventos de Azure Service Bus recibidos mediante Azure Event Grid utilizando Azure Functions
En este tutorial, aprenderá a responder a eventos de Azure Service Bus que se reciben a través de Azure Event Grid con Azure Functions y Azure Logic Apps.
En este tutorial, aprenderá a:
- Creación de un espacio de nombres de Service Bus
- Preparación de una aplicación de ejemplo para enviar mensajes
- Envío de mensaje al tema de Service Bus
- Recepción de mensajes mediante Logic Apps
- Configuración de una función de prueba en Azure
- Conexión de la función y el espacio de nombres mediante Event Grid
- Recepción de mensajes mediante Azure Functions
Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Creación de un espacio de nombres de Service Bus
Siga las instrucciones de este tutorial: Inicio rápido: Use Azure Portal para crear un tema de Service Bus y suscripciones al tema para realizar las siguientes tareas:
- Cree un espacio de nombres de Service Bus Premium.
- Obtenga la cadena de conexión.
- Cree un tema de Service Bus.
- Cree una suscripción al tema. En este tutorial solo necesita una suscripción, por lo que no es necesario crear suscripciones S2 o S3.
Envío de mensaje al tema de Service Bus
En este paso utilizará una aplicación de ejemplo para enviar mensajes al tema de Service Bus que creó en el paso anterior.
Clone el repositorio azure-service-bus de GitHub o descargue el archivo zip y extraiga los archivos.
En Visual Studio, vaya a la carpeta \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 y abra el archivo SBEventGridIntegration.sln.
En la ventana del Explorador de soluciones, expanda el proyecto MessageSender y seleccione Program.cs.
Reemplace
<SERVICE BUS NAMESPACE - CONNECTION STRING>
por la cadena de conexión del espacio de nombres de Service Bus y<TOPIC NAME>
por el nombre del tema.const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>"; const string TopicName = "<TOPIC NAME>";
Compile y ejecute el programa para enviar cinco mensajes de prueba (
const int numberOfMessages = 5;
) al tema de Service Bus.
Requisitos previos adicionales
Instale Visual Studio 2022 e incluya la carga de trabajo Desarrollo de Azure. Esta carga de trabajo contiene las herramientas de Azure Functions que necesita para crear, compilar e implementar proyectos de Azure Functions en Visual Studio.
Implementar la aplicación de función
Nota
Para más información acerca de cómo crear e implementar una aplicación de Azure Functions, consulte Desarrollo de Azure Functions con Visual Studio.
Abra el archivo ReceiveMessagesOnEvent.cs que se encuentra en el proyecto FunctionApp1 de la solución SBEventGridIntegration.sln.
Reemplace
<SERVICE BUS NAMESPACE - CONNECTION STRING>
por la cadena de conexión del espacio de nombres de Service Bus. Debería ser la misma que utilizó en el archivo Program.cs que se encuentra en el proyecto MessageSender de la misma solución.Haga clic con el botón derecho en FunctionApp1 y seleccione Publicar.
En la página Publicar, seleccione Iniciar. Es posible que estos pasos no sean iguales que los que se muestran, pero el proceso de publicación debería ser similar.
En el Asistente para publicación, en la página Destino, seleccione Azure como Destino.
En la página Destino específico, seleccione Azure Function App (Windows) .
En la página Functions instance (Instancia de Functions), seleccione Create a new Azure function (Crear una función de Azure).
En la página Function App (Windows) , siga estos pasos:
- Escriba el nombre de la aplicación de funciones.
- Seleccione una suscripción de Azure.
- Seleccione un grupo de recursos existente o cree uno nuevo. En este tutorial, seleccione el grupo de recursos que tiene el espacio de nombres de Service Bus.
- Seleccione el tipo de plan de App Service.
- Seleccione una ubicación. Seleccione la misma ubicación que el espacio de nombres de Service Bus.
- Seleccione un almacén de Azure Storage existente o haga clic en Nuevo para crear la cuenta de almacenamiento que desee utilizar en la aplicación de funciones.
- Seleccione Crear para crear la aplicación de funciones.
En la página Functions instance (Instancia de Functions) del Asistente para publicación, seleccione Finalizar.
En la página Publicar de Visual Studio, seleccione Publicar para publicar la aplicación de funciones en Azure.
En la ventana Salida, consulte los mensajes relacionados con la creación y la publicación, y confirme que los dos procesos se han realizado correctamente.
Ahora, en la página Publicar, en la sección Hosting, seleccione ... (puntos suspensivos) y Administrar en Azure Portal.
En Azure Portal, en la página Aplicación de funciones, seleccione Funciones en el menú de la izquierda y confirme que puede ver dos funciones:
Seleccione EventGridTriggerFunction en la lista. Se recomienda utilizar el desencadenador de Event Grid con Azure Functions, ya que tiene algunas ventajas frente al desencadenador de HTTP. Para más información, consulte Azure Functions como controlador de eventos para eventos de Event Grid.
En la página Función de EventGridTriggerFunction, seleccione Supervisar en el menú de la izquierda.
Seleccione Configurar y configure Application Insights para que capture el registro de invocación. Utilice esta página para supervisar las ejecuciones de la función mediante los eventos de Service Bus recibidos desde Event Grid.
En la página Application Insights, escriba el nombre del recurso, seleccione su ubicación y haga clic en Aceptar.
Seleccione la función EventGridTriggerFunction en la parte superior (menú de la ruta de navegación) para volver a la página Función.
Compruebe que se encuentra en la página Supervisión.
Mantenga esta página abierta en una pestaña del explorador web. Tendrá que actualizarla más adelante para ver las invocaciones de esta función.
Conexión de la función y el espacio de nombres de Service Bus mediante Event Grid
En esta sección va a asociar la función y el espacio de nombres de Service Bus mediante Azure Portal.
Para crear una suscripción de Azure Event Grid, siga estos pasos:
En Azure Portal, vaya a su espacio de nombres de Service Bus y, luego, en el panel izquierdo, seleccione Eventos. Se abre la ventana del espacio de nombres, con dos suscripciones de Event Grid que se muestran en el panel derecho.
Seleccione +Suscripción de eventos en la barra de herramientas.
En la página Crear suscripción de eventos, realice los siguientes pasos:
Escriba el nombre de la suscripción.
Escriba un nombre para el tema del sistema. Los temas del sistema se crean para los recursos de Azure, como la cuenta de Azure Storage y Azure Service Bus. Para más información acerca de los temas del sistema, consulte Introducción a los temas del sistema.
Seleccione Función de Azure en Tipo de punto de conexión y elija Seleccionar un extremo.
En la página Seleccionar la función de Azure, seleccione la suscripción, el grupo de recursos, la aplicación de funciones, el espacio y la función, y haga clic en Confirmar selección.
En la página Crear suscripción de eventos, cambie a la pestaña Filtros y realice las siguientes tareas:
Seleccione Habilitar el filtrado del asunto.
Escriba el nombre de la suscripción en el tema de Service Bus (S1) que creó anteriormente.
Seleccione el botón Crear.
Cambie a la pestaña Suscripciones a eventos de la página Eventos y confirme que ve la suscripción de eventos en la lista.
Supervisión de la aplicación de Functions
Los mensajes que envió anteriormente al tema de Service Bus se reenvían a la suscripción (S1). Event Grid reenvía los mensajes de la suscripción a la función de Azure. En este paso del tutorial, va a comprobar si se invocó la función y consultará los mensajes informativos registrados.
En la página de la aplicación de funciones de Azure, cambie a la pestaña Supervisión si aún no está activa. Verá una entrada para cada mensaje publicado en el tema de Service Bus. Si no las ve, actualice la página al cabo de unos minutos.
Seleccione la invocación en la lista para ver los detalles.
También puede usar la pestaña Registros de la página Supervisión para ver la información de registro a medida que se envían los mensajes. Puede que haya algo de retraso, así que espere unos minutos para ver los mensajes registrados.
Solución de problemas
Si no ve ninguna invocación de la función después de esperar un tiempo y de actualizar, siga estos pasos:
Asegúrese de que los mensajes han llegado al tema de Service Bus. Consulte el contador de mensajes entrantes en la página Tema de Service Bus. En este caso, la aplicación MessageSender se ejecutó dos veces, por lo que aparecerán 10 mensajes (5 mensajes por cada ejecución).
Confirme que no hay mensajes activos en la suscripción de Service Bus. Si no ve ningún evento en esta página, compruebe si el valor de Recuento de mensajes activos es cero en la página Service Bus Subscription (Suscripción de Service Bus). Si es mayor que cero, por alguna razón, los mensajes de la suscripción no se están reenviando a la función del controlador (el controlador de la suscripción de eventos). Compruebe que la suscripción de eventos esté configurada correctamente.
También puede ver los eventos entregados en la página Eventos del espacio de nombres de Service Bus.
También puede consultar si los eventos se han entregado en la página Suscripción de eventos. Para acceder a esta página, seleccione la suscripción de eventos en la página Eventos.
Pasos siguientes
- Más información sobre Azure Event Grid.
- Más información acerca de Azure Functions.
- Más información acerca de la característica Logic Apps de Azure App Service.
- Aprenda más sobre Azure Service Bus.