Publicar resultados de una consulta de Azure SQL Database a Azure Service Bus con Logic App

En esta ocasión veremos como publicar resultados de una consulta de Azure SQL Database a Service Bus usando los flujos de Logic Apps.
Una de las grandes ventajas de utilizar Logic Apps es que nos permite diseñar flujos complejos de negocio de una manera fácil y escalable. De igual manera podemos integrar fácilmente flujos de una empresa on-promise a Azure, incluso de flujos Legacy sin necesidad de adentrarte en el código.
Pre-Requisitos
Crear recursos de Azure SQL Database y Service Bus
En esta guía nos enfocaremos en la funcionalidad de Logic Apps, por lo tanto dejaré un enlace de como crear una base de datos de SQL en Azure y un servicio de Service Bus
Azure SQL Database:
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started
Service Bus:
https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues
Crear recursos de Logic Apps
Vamos a Azure Marketplace y buscamos por “Logic App”, luego damos clic en crear y completamos los datos de creación del recurso:
image
1
Crear Workflow
Una vez que termine de crear, navegamos a nuestro nuevo servicio de Logic App y damos clic en “Edit” para empezar a crear flujos:
2
image
Damos clic en “Black LogicApp” para comenzar.
Logic App se rige por los siguientes conceptos :
Workflow: Logic Apps proporciona una forma gráfica de modelar procesos empresariales con una serie de pasos o un Workflow.
Managed Connectors: Logic Apps necesita de acceso a datos y servicios para poder trabajar. Los conectores son útiles para poder conectar servicios y ayudar a obtener datos, por ejemplo: SQL, Service Bus, One Drive, Twitter, etc.
Triggers: Algunos conectores también pueden actuar como un Trigger. Un Trigger inicia una nueva instancia de un Workflow basado en un evento específico, como la llegada de un correo electrónico, un cambio en la cuenta de Azure Storage, al recibir un mensaje de Service Bus, etc.
Actions: Cada paso después de un Trigger se le denomina “Action”. Cada acción generalmente se mapea a un conector o a una llamada a una aplicación Custom API.
Enterprise Integration Pack: Para escenarios de integración mas avanzados, Logic Apps incluye las funcionalidades de Biztalk. Los conectores de Enterprise Integration Pack te permite incluir validaciones, transformaciones entre otras operaciones de integración de manera fácil en tu Workflow de Logic Apps.
Agregar Trigger
Cuando creamos una Logic App, siempre debemos de comenzar con un Trigger, ya que esté indica cuando se debe ejecutar el flujo.
Para esta demo, vamos a seleccionar el trigger “Schedule – Recurrence”. Este trigger nos permitirá ejecutar recurrentemente nuestro flujo, el cual puede ser por intervalos de: segundos, minutos, horas, días, etc.
Buscamos por “schedule” y lo seleccionamos:
image
image
Agregar Acción (conector SQL)
Una vez que configuramos nuestro trigger, vamos a dar clic en “New Step –> Add an Action” para agregar un nuevo conector. Para nuestro ejemplo, vamos a seleccionar un conector de SQL para obtener datos de una tabla.
image
Después de elegir el tipo de acción, vamos a realizar la conexión a la base de datos ingresando la información de nuestro servidor de Azure SQL Database y luego seleccionamos la tabla de donde vamos a obtener los datos. En mi caso tengo una tabla llamada “NewClients”:
image
image
En mi tabla tengo los siguientes datos:
image
Ahora vamos a agregar un filtro para seleccionar solo los datos “Activos” de nuestra tabla (para expandir las opciones avanzadas, necesitas dar clic en “show advanced options”)
Les comparto una lista de expresiones de filtrado para ODATA:
https://msdn.microsoft.com/en-us/library/hh169248%28v=nav.90%29.aspx?f=255&MSPPError=-2147217396
image
Para probar que nuestro flujo funciona, vamos a dar clic en “Save” y luego en “Run”:
4
5
image
image
image
Éxito! obtuvimos solo los dos registros activos de nuestra tabla “NewClients”
El siguiente paso es crear una Acción para mandar los resultados de nuestra consulta a una cola de mensajes de Service Bus.
Agregar Acción para manejo de resultados de SQL Database
Para obtener los resultados de nuestra consulta con formato JSON, podemos agregar una Acción de tipo: “Data operation – Compose” y luego agregar como “Input” el valor de nuestro resultado de SQL Database:
image
image
image
Agregar Acción para Service Bus
Por ultimo damos clic en “Add new step” y seleccionamos  la acción de enviar mensaje de Service Bus, luego agregamos el nombre de nuestra cola de mensajes y la conexión a nuestro recurso de Service Bus previamente creado. Para especificar el contenido del mensaje, podemos agregar la salida de nuestra acción de “Data Operation Compose” la cual contiene el resultado de la consulta de SQL en formato JSON:
image.
image
image
Finalmente damos clic en “Save” y estaremos listos para ejecutar nuestro Flow.
6
Una vez que corramos nuestro Workflow, veremos el siguiente resultado:
image
image
image
image
Genial!! Vemos que se ha enviado nuestro mensaje con éxito, ahora vamos a comprobar que realmente existe el mensaje en nuestra cola.
Para esto creé un programa de consola que unicamente obtiene mensajes de una cola en especifico:
image
Corremos el programa y esperamos a que nuestro Workflow publique un mensaje:
image
Vemos que nuestro mensaje fue publicado y obtenido con éxito, también observamos que nuestros datos están en formato JSON. Si esperamos otro minuto mas (es la configuración de nuestro Trigger(Scheduler)) veremos nuevos mensajes:
image
Felicidades! Has creado tu primer flujo funcional con Logic Apps.
Un gran saludo a todos!

Comments

Popular posts from this blog

Configurar y desplegar una Web API en Azure App Service Environment

Despliegue de contenedores Docker a Azure Web Apps

Patrones de diseño para aplicaciones de alta disponibilidad en Azure - Resilient Applications (Parte I: Retry Policy)

Conectar .NET Web API con Azure API Management

Configurar trigger de Integración Continua en VSTS para ejecutar una tarea de compilación al subir cambios en Source Control