Interconecta sistemas de información con Azure Service Bus

Hoy en día los sistemas de información se componen de múltiples componentes, tales como aplicaciones monolíticas, servicios web, procesos batch, etc.

La transformación digital requiere que exista un flujo de información entre esos componentes, lo que plantea una serie de desafíos debido a las distintas tecnologías que se han ido utilizando a lo largo del tiempo.

El uso de servicios web para transferir información entre sistemas suele ser la opción más adecuada y ampliamente elegida, pero existen matices a tener en cuenta, sobre todo a nivel de disponibilidad, puesto que ambos sistemas deben estar en línea de forma simultánea y deben ser capaces de soportar la misma carga de tráfico.

En escenarios donde sea importante controlar la carga de trabajo (tanto en volumen como en qué momento ejecutarla) puede aplicarse Azure Service Bus.

¿Qué es Azure Service Bus?

Azure Service Bus es un agente de mensajes que incluye colas en las que se pueden enviar mensajes y topics a los que es posible suscribirse para recibir esos mensajes. La gran ventaja de este sistema es que se pueden enviar mensajes a la cola de forma masiva para luego procesarlos de forma asíncrona pudiendo controlar la carga de trabajo.

Azure Service Bus ofrece alta disponibilidad, redundancia y recuperación ante desastres, como la mayoría de servicios de Azure.

Conceptos

Mensajes: Un mensaje es una cadena de texto con un formato estructurado (Json, XML, Apache Avro) o no estructurado, al que se le aplica una serie de metadatos

Colas: Los mensajes se almacenan en las colas. A su llegada, los mensajes se ordenan y se les aplica una marca de tiempo. Los mensajes quedan disponibles en la cola hasta que una aplicación los “extrae”.

Temas (Topics): Los temas son útiles en escenarios de publicación y suscripción. Un mensaje puede publicarse para un tema concreto. Posteriormente, varias aplicaciones pueden estar suscritas a ese tema, lo que permite que reciban distintas copias de ese mensaje.

Espacio de nombres: Un espacio de nombres es una especie de “servidor” que puede contener distintas colas

Escenarios de uso

Mensajería: Transferir datos entre aplicaciones, tales como pedidos, mensajes de chat, movimientos de inventario, etc.

Desacoplamiento de aplicaciones: Al permitir procesar la información de forma asíncrona, esto es, sin que ambos sistemas deban estar en línea o disponibles de forma simultánea

Equilibrado de carga: Se permite la escritura y lectura de mensajes en paralelo, de modo que varios consumidores puede estar suscritos a un topic y procesar los mensajes entrantes de forma sincronizada

Uso de temas o topics: Cada mensaje introducido en la cola puede tener un tema o topic asignado, lo que permite que las aplicaciones suscritas a un tema concreto solo reciban los mensajes que deben procesar

Transacciones: Es posible encadenar operaciones atómicas, como por ejemplo procesar los mensajes y publicar los resultados en una o varias colas para que otras piezas de software puedan a su vez recibir esos resultados y procesarlos

Laboratorio Azure Service Bus

En este laboratorio de uso hemos realizado una aplicación de ejemplo de mensajería (chat) con las siguientes características:

  • Aplicación de consola .NET 5
  • Creación de canal para los mensajes (topic)
  • Envío y recepción de mensajes del canal

Código fuente disponible en GitHub

Requisitos para su ejecución:

  • Suscripción de Azure
  • Recurso Azure Service Bus Standard (10 $USD / 12.5 millones de mensajes / mes). Se requiere al menos la versión Standard para el uso de topics.

¿Quieres saber más de cómo implementar Azure Service Bus?  Ponte en contacto con nosotros y uno de nuestros expertos podrá ayudarte.