Compartir vía


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.

  1. Clone el repositorio azure-service-bus de GitHub o descargue el archivo zip y extraiga los archivos.

  2. En Visual Studio, vaya a la carpeta \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 y abra el archivo SBEventGridIntegration.sln.

  3. En la ventana del Explorador de soluciones, expanda el proyecto MessageSender y seleccione Program.cs.

  4. 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>";
    
  5. Compile y ejecute el programa para enviar cinco mensajes de prueba (const int numberOfMessages = 5;) al tema de Service Bus.

    Salida de la aplicación de consola

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.

  1. Abra el archivo ReceiveMessagesOnEvent.cs que se encuentra en el proyecto FunctionApp1 de la solución SBEventGridIntegration.sln.

  2. 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.

  3. Haga clic con el botón derecho en FunctionApp1 y seleccione Publicar.

  4. 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.

  5. En el Asistente para publicación, en la página Destino, seleccione Azure como Destino.

  6. En la página Destino específico, seleccione Azure Function App (Windows) .

  7. En la páginaInstancia de Functions, seleccione Crear nuevo.

    Recorte de pantalla que muestra el botón Agregar función del cuadro de diálogo Visual Studio - Publicar.

  8. En la página Function App (Windows) , siga estos pasos:

    1. Escriba el nombre de la aplicación de funciones.
    2. Seleccione una suscripción de Azure.
    3. 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.
    4. Seleccione el tipo de plan de App Service.
    5. Seleccione una ubicación. Seleccione la misma ubicación que el espacio de nombres de Service Bus.
    6. 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.
    7. En Application Insights, seleccione una instancia de Application Insights existente para asociarla a la función de Azure o cree una.
    8. Seleccione Crear para crear la aplicación de funciones.
  9. En la página Functions instance (Instancia de Functions) del Asistente para publicación, seleccione Finalizar.

  10. En la página Publicar de Visual Studio, seleccione Publicar para publicar la aplicación de funciones en Azure.

  11. 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.

    Si se produce un error en la publicación con un problema de autenticación, asegúrese de que la opción Publicación de autenticación básica SCM está habilitada para la aplicación de Azure Functions.

    Recorte de pantalla que muestra la opción Publicación de autenticación básica de SCM habilitada.

  12. Ahora, en la página Publicar, en la sección Hospedaje, seleccione ... (puntos suspensivos) , y seleccione Abrir en Azure Portal.

    Recorte de pantalla que muestra la página Publicar en Visual Studio.

  13. En Azure Portal, en la página Aplicación de 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.

    Captura de pantalla que muestra la página Funciones con la función de desencadenador de Event Grid.

  14. En la página Función de EventGridTriggerFunction, cambie a la pestaña Invocaciones.

    Recorte de pantalla que muestra la página Invocación de una función Desencadenador de Event Grid.

    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:

  1. 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.

    Recorte de pantalla que muestra la página Eventos de un espacio de nombres de Service Bus.

  2. Seleccione +Suscripción de eventos en la barra de herramientas.

  3. En la página Crear suscripción de eventos, realice los siguientes pasos:

    1. Escriba el nombre de la suscripción.

    2. 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.

    3. Seleccione Azure Function para Tipo de punto de conexión , y elija Configurar un punto de conexión.

      Recorte de pantalla que muestra la página Crear suscripción de eventos para un espacio de nombres de Service Bus.

    4. 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.

      Recorte de pantalla que muestra la selección de un punto de conexión de función de Azure.

    5. En la página Crear suscripción de eventos, cambie a la pestaña Filtros y realice las siguientes tareas:

      1. Seleccione Habilitar el filtrado del asunto.

      2. Escriba el nombre de la suscripción al tema de Service Bus que creó anteriormente. En el recorte de pantalla siguiente, el nombre de la suscripción es mysub.

      3. Seleccione el botón Crear.

        Recorte de pantalla que muestra la página Filtros de una suscripción de eventos.

  4. 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.

    Recorte de pantalla que muestra las suscripciones de eventos para el espacio de nombres de Service Bus.

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.

  1. En la página de la aplicación de funciones de Azure, cambie a la pestaña Invocaciones 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.

    Recorte de pantalla que muestra la página Invocaciones de la función después de las invocaciones.

  2. Seleccione la invocación en la lista para ver los detalles.

    Recorte de pantalla que muestra los detalles de invocación de función.

    También puede usar la pestaña Registros para ver la información de registro a medida que se envían los mensajes. Podría haber algún retraso, así que dele unos minutos para ver los mensajes registrados.

    Recorte de pantalla que muestra la pestaña Registros de una función de Azure.

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:

  1. 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).

    Recorte de pantalla que muestra la página Tema de Service Bus: mensajes entrantes.

  2. 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.

    Recorte de pantalla que muestra el recuento de mensajes activos en la suscripción de Service Bus.

  3. También puede ver los eventos entregados en la página Eventos del espacio de nombres de Service Bus.

    Recorte de pantalla que muestra el recuento de eventos entregados.

  4. 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.

    Recorte de pantalla que muestra la página Suscripción de eventos: eventos entregados.