Tutorial: Respuesta a eventos de Azure Service Bus recibidos mediante Azure Event Grid utilizando Azure Logic Apps

En este tutorial, aprenderá a responder a eventos de Azure Service Bus recibidos mediante Azure Event Grid utilizando Azure Logic Apps.

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

Recepción de mensajes mediante Logic Apps

En este paso, va a crear una aplicación lógica de Azure que recibe eventos de Service Bus mediante Azure Event Grid.

  1. Seleccione +Crear un recurso, Integración y, luego, Aplicación lógica.

    Captura de pantalla del menú Crear un recurso -> integración -> Aplicación lógica.

  2. En la página Crear aplicación lógica, siga estos pasos:

    1. Selección la suscripciónde Azure.
    2. En Grupo de recursos, seleccione Usar existente y seleccione el grupo de recursos que usó para otros recursos (por ejemplo, función de Azure, espacio de nombres de Service Bus) que creó anteriormente.
    3. Escriba un nombre para la aplicación lógica.
    4. Seleccione la Región de la aplicación lógica.
    5. En Tipo de plan, seleccione Consumo.
    6. Seleccione Revisar + crear. Captura de pantalla de la página Crear aplicación lógica.
    7. En la página Revisar y crear, seleccione Crear para crear la aplicación lógica.
  3. En la página Implementación completa, seleccione Ir al recurso para ir a la página Aplicación lógica.

  4. En la página Diseñador de aplicaciones lógicas, seleccione Aplicación lógica en blanco en Plantillas.

Agregue un paso para recibir mensajes de Service Bus a través de Event Grid

  1. En la página Aplicación lógica, seleccione Diseñador de aplicaciones lógicas en el menú de la izquierda.

  2. En el panel derecho, en Plantillas, seleccione Aplicación lógica en blanco.

    Captura de pantalla de la página Diseñador de aplicación lógica con la opción Aplicación lógica en blanco seleccionada.

  3. En el diseñador, realice los pasos siguientes:

    1. Busque Event Grid.

    2. Seleccione When a resource event occurs: Azure Event Grid (Cuando se produzca un evento de recursos: Azure Event Grid).

      Captura de pantalla del Diseñador de aplicación lógica con el desencadenador de Event Grid seleccionado.

  4. Seleccione Iniciar sesión.

    Captura de pantalla del Diseñador de aplicación lógica con el desencadenador de inicio de sesión seleccionado.

  5. En la página Iniciar sesión en la cuenta, seleccione la cuenta que quiere usar para iniciar sesión en Azure. 1.

  6. En la página When a resource event occurs (Cuando se produce un evento de recurso), realice los siguientes pasos:

    1. Seleccione su suscripción a Azure.

    2. En Resource Type (Tipo de recurso), seleccione Microsoft.ServiceBus.Namespaces.

    3. En Resource Name (Nombre del recurso), seleccione el espacio de nombres de Service Bus.

    4. Seleccione Add new parameter (Agregar nuevo parámetro), seleccione Filtro de sufijo (Filtro de sufijo) y, a continuación, mueva el foco fuera de la lista desplegable.

      Captura de pantalla de la adición de un nuevo parámetro de tipo Filtro de sufijo.

    5. En Suffix Filter (Filtro de sufijo), escriba el nombre de la suscripción al tema de Service Bus.

      Captura de pantalla del Diseñador de aplicación lógica con la configuración de espacio de nombres de Service Bus.

  7. En el diseñador, seleccione +New Step (+Nuevo paso) y siga los siguientes pasos:

    1. Busque Service Bus.

    2. Seleccione Service Bus en la lista.

      Captura de pantalla de la selección de Service Bus.

    3. Seleccione Get messages (Obtener mensajes) en la lista Actions (Acciones).

    4. Seleccione Get messages from a topic subscription (peek-lock) (Obtener mensajes de una suscripción de tema [bloque de inspección]).

      Captura de pantalla del Diseñador de aplicación lógica con la opción Obtener mensajes de una suscripción de tema seleccionada.

    5. Siga estos pasos:

      1. Escriba un nombre para la conexión. Por ejemplo: obtener mensajes de la suscripción de tema.

      2. Confirme que Tipo de autenticación está establecido en Clave de acceso.

      3. En Cadena de conexión, copie y pegue la cadena de conexión en el espacio de nombres de Service Bus que guardó anteriormente.

      4. Seleccione Crear.

        Captura de pantalla del Diseñador de aplicación lógica con la cadena de conexión de Service Bus especificada.

    6. Seleccione su tema y suscripción.

      Captura de pantalla del Diseñador de aplicación lógica con el tema de Service Bus y la suscripción especificados.

Agregar un paso para procesar y completar los mensajes recibidos

En este paso, agrega pasos para enviar el mensaje recibido en un correo electrónico y, a continuación, completará el mensaje. En un escenario real, procesa un mensaje en la aplicación lógica antes de completar el mensaje.

Agregar un bucle loop

  1. Seleccione + New step(+ Nuevo paso).

  2. Busque y seleccione Control.

    Captura de pantalla de la categoría Control.

  3. En la lista Acciones, seleccione Para cada.

    Captura de pantalla de la operación For-each seleccionada.

  4. En Seleccionar una salida de los pasos anteriores (haga clic dentro del cuadro de texto si es necesario), seleccione Cuerpo en Obtener mensajes de una suscripción de tema (peek-lock) .

    Captura de pantalla de la selección de entrada de For each.

Agregue un paso dentro del bucle Para cada para enviar un correo electrónico con el cuerpo del mensaje.

  1. En el bucle Para cada, seleccione Agregar una acción.

    Captura de pantalla de la selección del botón Agregar una acción en el bucle For-each.

  2. En el cuadro de texto Buscar conectores y acciones, escriba Office 365.

  3. Busque Office 365 Outlook en el cuadro de texto y selecciónelo.

    Captura de pantalla de la selección de Office 365.

  4. En la lista de acciones, seleccione Enviar un correo electrónico (V2) .

    Captura de pantalla de la selección de la operación Enviar un correo electrónico.

  5. Seleccione Iniciar sesión y siga los pasos para crear una conexión a Office 365 Outlook.

  6. En la ventana Enviar correo electrónico (V2) , siga estos pasos:

  7. Seleccione dentro del cuadro de texto de Cuerpo y siga estos pasos:

    1. En Para, escriba una dirección de correo electrónico.

    2. En Asunto, escriba Mensaje recibido de suscripción del tema de Service Bus.

    3. Cambie a Expresión.

    4. Escriba la siguiente expresión:

      base64ToString(items('For_each')?['ContentData'])
      
    5. Seleccione Aceptar.

      Captura de pantalla de la expresión para el cuerpo de la actividad de Enviar un correo electrónico.

Agregue otra acción en el bucle Para cada para completar el mensaje.

  1. En el bucle Para cada, seleccione Agregar una acción.

    1. Seleccione Service Bus en la lista Recientes.

    2. Seleccione Complete the message in a topic subscription (Completar el mensaje en una suscripción de tema) en la lista de acciones.

      Captura de pantalla de la selección de Completar un mensaje en una suscripción de tema.

    3. Seleccione el tema de Service Bus.

    4. Seleccione una suscripción al tema.

    5. En Lock token of the message ( Token de bloqueo del mensaje), seleccione Lock Token (Token de bloqueo) en Dynamic content (Contenido dinámico).

      Captura de pantalla del campo Token de bloqueo.

  2. Seleccione Save (Guardar) en la barra de herramientas del diseñador de aplicaciones lógicas para guardar la aplicación lógica.

    Captura de pantalla del botón Guardar de la pantalla Diseñador de aplicación lógica.

Pruebas de la aplicación

  1. Si aún no ha enviado mensajes de prueba al tema, siga las instrucciones de la sección Envío de mensajes al tema de Service Bus para hacerlo.

  2. Cambie a la página Información general de la aplicación lógica y, a continuación, cambie a la pestaña Historial de ejecuciones en el panel inferior. Verá los mensajes de las ejecuciones de la aplicación lógica que se enviaron al tema. Podrían pasar unos minutos antes de que se ejecute la aplicación lógica. Seleccione Actualizar en la barra de herramientas para actualizar la página.

    Captura de pantalla del historial de ejecución de la aplicación lógica.

  3. Seleccione una ejecución de la aplicación lógica para ver los detalles. Observe que se han procesado cinco mensajes en el bucle for.

    Captura de pantalla de los detalles de la ejecución de la aplicación lógica seleccionada.

  4. Debe obtener un correo electrónico para cada mensaje que recibe la aplicación lógica.

    Captura de pantalla de Outlook con los mensajes recibidos de la suscripción a los temas.

Solución de problemas

Si no ve ninguna invocació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, ejecuté la aplicación MessageSender una vez, por lo que veo 5 mensajes.

    Captura de pantalla de la página del tema Service Bus con el recuento de mensajes entrantes seleccionado.

  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.

    Captura de pantalla de la página Suscripción de Service Bus con el recuento de mensajes activos seleccionado.

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

    Captura de pantalla de la página Eventos de la página Espacio de nombres de Service Bus.

  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.

    Captura de pantalla de la página Suscripción de eventos con el recuento de eventos entregados seleccionado.

Pasos siguientes