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.
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.
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.
Seleccione +Crear un recurso, Integración y, luego, Aplicación lógica.
En la página Crear aplicación lógica, siga estos pasos:
- Selección la suscripciónde Azure.
- 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.
- Escriba un nombre para la aplicación lógica.
- Seleccione la Región de la aplicación lógica.
- En Tipo de plan, seleccione Consumo.
- Seleccione Revisar + crear.
- En la página Revisar y crear, seleccione Crear para crear la aplicación lógica.
En la página Implementación completa, seleccione Ir al recurso para ir a la página Aplicación lógica.
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
En la página Aplicación lógica, seleccione Diseñador de aplicaciones lógicas en el menú de la izquierda.
En el panel derecho, en Plantillas, seleccione Aplicación lógica en blanco.
En el diseñador, realice los pasos siguientes:
Busque Event Grid.
Seleccione When a resource event occurs: Azure Event Grid (Cuando se produzca un evento de recursos: Azure Event Grid).
Seleccione Iniciar sesión.
En la página Iniciar sesión en la cuenta, seleccione la cuenta que quiere usar para iniciar sesión en Azure. 1.
En la página When a resource event occurs (Cuando se produce un evento de recurso), realice los siguientes pasos:
Seleccione su suscripción a Azure.
En Resource Type (Tipo de recurso), seleccione Microsoft.ServiceBus.Namespaces.
En Resource Name (Nombre del recurso), seleccione el espacio de nombres de Service Bus.
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.
En Suffix Filter (Filtro de sufijo), escriba el nombre de la suscripción al tema de Service Bus.
En el diseñador, seleccione +New Step (+Nuevo paso) y siga los siguientes pasos:
Busque Service Bus.
Seleccione Service Bus en la lista.
Seleccione Get messages (Obtener mensajes) en la lista Actions (Acciones).
Seleccione Get messages from a topic subscription (peek-lock) (Obtener mensajes de una suscripción de tema [bloque de inspección]).
Siga estos pasos:
Escriba un nombre para la conexión. Por ejemplo: obtener mensajes de la suscripción de tema.
Confirme que Tipo de autenticación está establecido en Clave de acceso.
En Cadena de conexión, copie y pegue la cadena de conexión en el espacio de nombres de Service Bus que guardó anteriormente.
Seleccione Crear.
Seleccione su tema y suscripción.
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
Seleccione + New step(+ Nuevo paso).
Busque y seleccione Control.
En la lista Acciones, seleccione Para cada.
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) .
Agregue un paso dentro del bucle Para cada para enviar un correo electrónico con el cuerpo del mensaje.
En el bucle Para cada, seleccione Agregar una acción.
En el cuadro de texto Buscar conectores y acciones, escriba Office 365.
Busque Office 365 Outlook en el cuadro de texto y selecciónelo.
En la lista de acciones, seleccione Enviar un correo electrónico (V2) .
Seleccione Iniciar sesión y siga los pasos para crear una conexión a Office 365 Outlook.
En la ventana Enviar correo electrónico (V2) , siga estos pasos:
Seleccione dentro del cuadro de texto de Cuerpo y siga estos pasos:
En Para, escriba una dirección de correo electrónico.
En Asunto, escriba Mensaje recibido de suscripción del tema de Service Bus.
Cambie a Expresión.
Escriba la siguiente expresión:
base64ToString(items('For_each')?['ContentData'])
Seleccione Aceptar.
Agregue otra acción en el bucle Para cada para completar el mensaje.
En el bucle Para cada, seleccione Agregar una acción.
Seleccione Service Bus en la lista Recientes.
Seleccione Complete the message in a topic subscription (Completar el mensaje en una suscripción de tema) en la lista de acciones.
Seleccione el tema de Service Bus.
Seleccione una suscripción al tema.
En Lock token of the message ( Token de bloqueo del mensaje), seleccione Lock Token (Token de bloqueo) en Dynamic content (Contenido dinámico).
Seleccione Save (Guardar) en la barra de herramientas del diseñador de aplicaciones lógicas para guardar la aplicación lógica.
Pruebas de la aplicación
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.
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.
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.
Debe obtener un correo electrónico para cada mensaje que recibe 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:
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.
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.