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.

    Console app output

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.

    Screenshot that shows the Create a resource -> Integration -> Logic app menu.

  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. Screenshot that shows the Create a logic app page.
    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.

    Screenshot that shows the Logic app designer page with the Blank logic app option selected.

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

      Screenshot that shows the Logic Apps Designer with Event Grid trigger selected.

  4. Seleccione Iniciar sesión.

    Screenshot that shows the Logic Apps Designer with the Sign-in button selected.

  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.

      Screenshot that shows adding of a new parameter of type Suffix filter.

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

      Screenshot that shows the Logic Apps Designer with connection configuration for the Service Bus namespace.

  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.

      Screenshot that shows the selection of 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]).

      Screenshot that shows the Logic Apps Designer with Get messages from a topic subscription selected.

    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.

        Screenshot that shows the Logic Apps Designer with the Service Bus connection string specified.

    6. Seleccione su tema y suscripción.

      Screenshot that shows the Logic Apps Designer with the Service Bus topic and subscription specified.

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.

    Screenshot that shows the Control category.

  3. En la lista Acciones, seleccione Para cada.

    Screenshot that shows the For-each operation selected.

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

    Screenshot that shows the selection of For each input.

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.

    Screenshot that shows the selection of Add an action button in the For-each loop.

  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.

    Screenshot that shows the selection of Office 365.

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

    Screenshot that shows the selection of Send an email operation.

  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.

      Screenshot that shows the expression for Body of the Send an email activity.

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.

      Screenshot that shows the selection of Complete a message in a topic subscription.

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

      Screenshot that shows the lock token field.

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

    Screenshot that shows the Save button in the Logic app designed.

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.

    Screenshot that shows the Logic app run history.

  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.

    Screenshot that shows the details for the selected logic app run.

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

    Screenshot of Outlook with the messages received from the topics' subscription.

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.

    Screenshot that shows the Service Bus Topic page with incoming message count selected.

  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.

    Screenshot that shows the Service Bus Subscription page with the active message count selected.

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

    Screenshot that shows the Events page of the Service Bus Namespace page.

  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.

    Screenshot that shows the Event Subscription page with the delivered event count selected.

Pasos siguientes