5.01.2017

Integrando Azure Service Bus con DocumentDB utilizando LogicApps

El “Stack” de integración de Azure crece continuamente con nuevas características dentro de los productos ya desarrollados o con nuevos productos para escenarios específicos. Una herramienta que facilita las tareas de integración en la nube es Logic Apps; la cual nos permite conectarnos con diversos endpoints tales como Dynamics, OneDrive, Azure Service Bus, y muchas otras más.

En este post vamos a desarrollar un flujo de integración para escenarios asincrónicos utilizando los siguientes componentes:

  • Cliente .NET
  • Azure Service Bus Queues
  • Logic Apps
  • DocumentDB

El siguiente diagrama nos muestra el escenario a implementar.

image

Como se puede ver en la figura anterior una aplicación de consola desarrollada en C# va a enviar un mensaje a una cola en el Azure Service Bus; seguidamente un flujo en Logic App va a estar escuchando la cola del Service Bus para guardar el contenido del mensaje en una colección en la base de datos DocumentDB.

El cliente C#

El primer paso es crear un cliente en .NET que envíe los mensajes al bus. Este cliente incorpora los valores de un pago ficticio dentro de las propiedades del mensaje. El código del cliente se ve a continuación.

image

El flujo en Logic App

El flujo de Logic App tiene un disparador que es un componente que se dispara cada vez que llega un mensaje a la cola del bus de servicios. La configuración del mismo se puede apreciar en la siguiente imagen.

image

Seguidamente procedemos a configurar el componente que guarda el registro del pago en la colección del DocumentDB. En este componente no solo especificamos la configuración de conexión sino que también creamos la estructura del documento que vamos a enviar a guardar, en este caso, un documento de pago. Tal y como se ve en la siguiente figura el mensaje se construye con las propiedades del mensaje obtenido de la cola del Azure Service Bus.

image

Cuando se intenta crear el documento desde las propiedades de mensaje que vienen del bus de servicios no tenemos acceso a las propiedades del mismo porque estas no son tipificadas y no se pueden determinar en tiempo de diseño. Para lograr acceso a las mismas tenemos que cambiar a la vista de código tal y como se muestra en al siguiente figura.

image

En este caso se accede la colección de propiedades y se especifica cual es el campo que se desea acceder. Después de esto, ejecutamos el flujo y el registro se inserta en a partir del mensaje que se envía a la cola de Windows Azure.