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. En Azure Portal, cree una aplicación lógica.
    1. Seleccione +Crear un recurso, Integración y, luego, Aplicación lógica.
    2. Selección la suscripción de Azure.
    3. 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.
    4. En Tipo, seleccione Consumo.
    5. Escriba un nombre para la aplicación lógica.
    6. Seleccione la Región de la aplicación lógica.
    7. Seleccione Revisar + crear.
    8. En la página Revisar y crear, seleccione Crear para crear la aplicación lógica.
    9. En la página Implementación finalizada, seleccione Ir al recurso.
  2. 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 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).

      Diseñador de aplicaciones lógicas: selección del desencadenador de Event Grid

  2. Seleccione Sign in (Iniciar sesión), escriba sus credenciales de Azure y seleccione Allow Access (Permitir acceso).
  3. 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.

      Imagen que muestra la adición de un filtro de sufijo.

    5. En Suffix Filter (Filtro de sufijo), escriba el nombre de la suscripción al tema de Service Bus. Diseñador de Logic Apps: configuración de eventos

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

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

      Diseñador de aplicaciones lógicas: obtención de la acción de mensajes

    5. Escriba un nombre para la conexión. Por ejemplo: Obtenga mensajes de la suscripción al tema y seleccione el espacio de nombres de Service Bus.

      Diseñador de aplicaciones lógicas: selección del espacio de nombres de Service Bus

    6. Seleccione RootManageSharedAccessKey y, luego, Crear.

      Diseñador de aplicaciones lógicas: selección de la clave de acceso compartido

    7. Seleccione su tema y suscripción.

      Captura de pantalla que muestra dónde se seleccionan el tema y la suscripción.

Agregar un paso para procesar y completar los mensajes recibidos

En este paso, agregará pasos para enviar el mensaje recibido en un correo electrónico y, a continuación, completará el mensaje. En un escenario real, procesará 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.

    Imagen que muestra la selección de la categoría Control

  3. En la lista Acciones, seleccione Para cada.

    Imagen que muestra la selección del control Para cada

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

    Imagen que muestra la selección de entrada en Para cada

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.

    Imagen que muestra la selección de agregar un botón de acción dentro del bucle Para cada

  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.

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

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

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

      Imagen que muestra la expresión del cuerpo de la actividad Enviar 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.

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

      Diseñador de aplicaciones lógicas: completar el mensaje

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

    Guardar una 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.

    Diseñador de aplicaciones lógicas: ejecuciones de 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.

    Detalles de la ejecución de una aplicación lógica

  4. Debe recibir un correo electrónico para cada mensaje recibido por la aplicación lógica.

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, la aplicación MessageSender se ejecutó dos veces, por lo que aparecerán 10 mensajes (5 mensajes por cada ejecución).

    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.

    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.

    Página Eventos: 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.

    Página Suscripción de eventos: eventos entregados

Pasos siguientes