Un intermediario de mensajes es un software que permite a las aplicaciones, sistemas y servicios comunicar entre sí e intercambiar información.
Para ello, el agente de mensajes traduce los mensajes entre protocolos de mensajería formales. Esto permite que los servicios interdependientes “hablen” entre sí directamente, incluso si fueron escritos en diferentes lenguajes o implementados en diferentes plataformas.
Los intermediarios de mensajes son módulos de software dentro de soluciones de middleware de mensajería o middleware orientado a mensajes (MOM). Este tipo de middleware proporciona a los desarrolladores un medio estandarizado para manejar el flujo de datos entre los componentes de una aplicación para que puedan enfocarse en su lógica central. Puede servir como una capa de comunicaciones distribuidas que permite que las aplicaciones que abarcan múltiples plataformas se comuniquen internamente.
Los intermediarios de mensajes pueden validar, almacenar, enrutar y entregar mensajes a los destinos apropiados. Sirven de intermediarios entre otras aplicaciones, permitiendo a los remitentes emitir mensajes sin saber dónde están los receptores, si están activos o no, o cuántos hay. Esto facilita el desacoplamiento de procesos y servicios dentro de los sistemas.
Para proporcionar un almacenamiento de mensajes confiable y una entrega garantizada, los intermediarios de mensajes a menudo dependen de una subestructura o componente llamado cola de mensajes que almacena y ordena los mensajes hasta que las aplicaciones consumidoras puedan procesarlos. En una cola de mensajes, los mensajes se almacenan en el orden exacto en que se transmitieron y permanecen en la cola hasta que se confirma la recepción.
La mensajería asíncrona se refiere al tipo de comunicación entre aplicaciones que posibilitan los corredores de mensajes. Previene la pérdida de datos valiosos y permite que los sistemas continúen funcionando incluso ante los problemas intermitentes de conectividad o latencia comunes en las redes públicas. La mensajería asíncrona garantiza que los mensajes se entregarán una vez (y sólo una vez) en el orden correcto con respecto a otros mensajes.
Los intermediarios de mensajes pueden comprender gestores de colas para manejar las interacciones entre múltiples colas de mensajes, así como servicios que proporcionan enrutamiento de datos, traducción de mensajes, persistencia y funcionalidades de gestión del estado del cliente.
Los intermediarios de mensajes ofrecen dos patrones básicos de distribución de mensajes o estilos de mensajería:
Mensajería punto a punto: Este es el patrón de distribución empleado en las colas de mensajes con una relación uno a uno entre el remitente y el receptor del mensaje. Cada mensaje en la cola se envía a un solo destinatario y se consume solo una vez. La mensajería punto a punto se requiere cuando se debe actuar sobre un mensaje solo una vez. Ejemplos de casos de uso adecuados para este estilo de mensajería incluyen el procesamiento de nóminas y transacciones financieras. En estos sistemas, tanto los remitentes como los receptores necesitan una garantía de que cada pago se enviará una vez y solo una vez.
Publicar o suscribir mensajes: En este patrón de distribución de mensajes, a menudo denominado "pub/sub", el productor de cada mensaje lo publica en un tema y varios consumidores de mensajes se suscriben a los temas de los que desean recibir mensajes. Todos los mensajes publicados en un tema se distribuyen a todas las aplicaciones suscritas a él. Se trata de un método de distribución de tipo broadcast, en el que existe una relación de uno a muchos entre el editor del mensaje y sus consumidores. Si, por ejemplo, una aerolínea difundiera actualizaciones sobre los horarios de aterrizaje o el estado de retraso de sus vuelos, varias partes podrían hacer uso de la información: el personal de tierra que realiza el mantenimiento y el reabastecimiento de combustible de la aeronave, los manipuladores de equipaje, los asistentes de vuelo y los pilotos que se preparan para el próximo viaje del avión, y los operadores de pantallas visuales que notifican al público. Un estilo de mensajería de publicación/suscripción sería adecuado para su uso en este escenario.
Las aplicaciones nativas de la nube están diseñadas para aprovechar los beneficios inherentes de la computación en la nube, incluyendo la flexibilidad, la escalabilidad y el despliegue rápido. Estas aplicaciones están compuestas por componentes pequeños, discretos y reutilizables llamados microservicios. Cada microservicio se despliega y puede ejecutar independientemente de los demás. Esto significa que cualquiera de ellos puede actualizar, escalar o reiniciar sin afectar a otros servicios del sistema. A menudo empaquetados en contenedores, los microservicios trabajan juntos para comprender una aplicación completa, aunque cada uno tiene su propia pila, incluyendo una base de datos y un modelo de datos que pueden ser diferentes de los demás.
Los microservicios deben tener un medio de comunicación entre sí para poder funcionar en conjunto. Los intermediarios de mensajes son uno de los mecanismos que emplean para crear esta red troncal de comunicaciones compartidas.
Los intermediarios de mensajes se emplean a menudo para gestionar las comunicaciones entre los sistemas locales y los componentes de la nube en entornos de nube híbrida. El uso de un intermediario de mensajes brinda un mayor control sobre las comunicaciones entre servicios, lo que garantiza que los datos se envíen de forma segura, confiable y eficiente entre los componentes de una aplicación. Los intermediarios de mensajes pueden desempeñar un papel similar en la integración de entornos multinube, permitiendo la comunicación entre cargas de trabajo y tiempos de ejecución que residen en diferentes plataformas. También son adecuados para su uso en computación sin servidor, en la que los servicios individuales alojados en la nube se ejecutan bajo demanda por solicitud.
Las APIs REST se emplean comúnmente para las comunicaciones entre microservicios. El término Transferencia de Estado Representacional (REST) define un conjunto de principios y restricciones que los desarrolladores pueden seguir al crear servicios web. Cualquier servicio que se adhiera a ellos podrá comunicar a través de un conjunto de operadores y solicitudes sin estado compartidos y uniformes. La interfaz de programación de aplicaciones (API) denota el código subyacente que, si se ajusta a las reglas REST, permite que los servicios se hablen entre sí.
Las APIs REST emplean el Protocolo de transferencia de hipertexto (HTTP) para comunicar. Dado que HTTP es el protocolo de transporte estándar de la Internet pública, las APIs REST son ampliamente conocidas, se emplean con frecuencia y son ampliamente interoperables. Sin embargo, HTTP es un protocolo de solicitud/respuesta, por lo que se emplea mejor en situaciones que requieren una solicitud/respuesta sincrónica. Esto significa que los servicios que realizan solicitudes a través de las APIs REST deben estar diseñados para esperar una respuesta inmediata. Si el cliente que recibe la respuesta está inactivo, el servicio de envío se bloqueará mientras espera la respuesta. La lógica de conmutación por error y manejo de errores debe integrar en ambos servicios.
Los intermediarios de mensajes habilitan las comunicaciones asíncronas entre servicios para que el servicio de envío no tenga que esperar a la respuesta del servicio de recepción. Esto mejora la tolerancia a fallas y la resiliencia en los sistemas en los que están empleados. Además, el uso de intermediarios de mensajes facilita el escalado de los sistemas, ya que un patrón de mensajería pub/sub puede soportar fácilmente un número cambiante de servicios. Los intermediarios de mensajes también realizan un seguimiento de los estados de los consumidores.
Mientras que los intermediarios de mensajes pueden soportar dos o más patrones de mensajería, incluyendo colas de mensajes y pub/sub, las plataformas de transmisión de eventos solo ofrecen patrones de distribución de estilo pub/sub. Diseñadas para su uso con grandes volúmenes de mensajes, las plataformas de transmisión de eventos son fácilmente escalables. Son capaces de ordenar flujos de registros en categorías y almacenarlos durante un período predeterminado. Sin embargo, a diferencia de los intermediarios de mensajes, las plataformas de transmisión de eventos no pueden garantizar la entrega de mensajes ni rastrear qué consumidores han recibido mensajes.
Las plataformas de transmisión de eventos ofrecen más escalabilidad que los intermediarios de mensajes, pero menos características que garanticen la tolerancia a fallas (como el reenvío de mensajes), así como capacidades más limitadas de enrutamiento y cola de mensajes.
Obtenga más información sobre la arquitectura basada en eventos.
Un bus de servicios empresariales (ESB) es un patrón arquitectónico que a veces se emplea en arquitecturas orientadas a servicios (SOAs) implementadas en todas las empresas. En un ESB, una plataforma de software centralizada combina protocolos de comunicación y formatos de datos en un "lenguaje común" que pueden compartir todos los servicios y aplicaciones de la arquitectura. Podría, por ejemplo, traducir las solicitudes que recibe de un protocolo (como XML) a otro (como JSON). Los ESBs transforman sus cargas útiles de mensajes mediante un proceso automatizado. La plataforma de software centralizada también gestiona otras lógicas de orquestación, como la conectividad, el enrutamiento y el procesamiento de solicitudes.
Sin embargo, las infraestructuras ESB son complejas y su integración puede resultar difícil y su mantenimiento costoso. Es difícil solucionarlos cuando los problemas ocurren en entornos de producción, no son fáciles de escalar y la actualización es tediosa.
Los intermediarios de mensajes son una alternativa "ligera" a los ESBs que proporcionan una funcionalidad similar—un mecanismo para las comunicaciones entre servicios—de forma más sencilla y a menor costo. Son adecuados para su uso en las arquitecturas de microservicios que se volvieron más frecuentes a medida que los ESBs caen en desgracia.
La implementación de intermediarios de mensajes puede abordar una amplia variedad de necesidades del negocio en todas las industrias y dentro de diversos entornos de computación empresarial. Son útiles en cualquier momento y lugar donde se requiera una comunicación confiable entre aplicaciones y una entrega segura de mensajes.
Los intermediarios de mensajes a menudo se emplean de las siguientes maneras:
IBM MQ ofrece capacidades de mensajería de nivel empresarial que mueven información de manera hábil y segura entre aplicaciones.
Conecte aplicaciones, servicios y datos con IBM Cloud Pak® for Integration, la plataforma de integración más completa del mercado.
Una cola de mensajes es un componente de las soluciones de middleware de mensajería que permite que aplicaciones y servicios independientes intercambien información.
El middleware acelera el desarrollo de aplicaciones distribuidas al simplificar la conectividad entre aplicaciones, componentes de aplicaciones y fuentes de datos de back-end.
iPaaS es una solución basada en la nube que estandariza y simplifica la integración en entornos locales y en la nube.