¿Qué es una cola de mensajes?
Una cola de mensajes es un componente de middleware de mensajería que permite intercambiar información entre aplicaciones y servicios independientes.
Fondo negro y azul
¿Qué es una cola de mensajes?

Una cola de mensajes es un componente de middleware de mensajería que permite intercambiar información entre aplicaciones y servicios independientes. Las colas de mensajes almacenan "mensajes" (paquetes de datos que las aplicaciones crean para que los consuman otras aplicaciones) en el orden en que se transmiten hasta que la aplicación que los consume puede procesarlos. Esto permite que los mensajes esperen de manera segura hasta que la aplicación receptora esté lista, por lo que si hay un problema con la red o la aplicación receptora, los mensajes en la cola de mensajes no se pierden.

Este modelo, conocido como mensajería asincrónica, evita la pérdida de datos y permite que los sistemas sigan funcionando si fallan los procesos o las conexiones. De esta forma, los desarrolladores pueden mantener los procesos y las aplicaciones separados, y sus comunicaciones autocontenidas y basadas en eventos para que la arquitectura sea más confiable.

Las colas de mensajes están disponibles en soluciones de mensajería en numerosas opciones de implementación, incluidos dispositivos físicos optimizados, servicios en la nube, mainframes y como software.

Beneficios

Las soluciones de cola de mensajes se utilizan ampliamente en todas las industrias y pueden ofrecer una variedad de beneficios tanto a los desarrolladores como a los administradores de sistemas, incluidos los siguientes:

  • Entrega de mensajes confiable: el uso de una cola de mensajes puede garantizar que los mensajes entre aplicaciones críticos para el negocio no se pierdan y que solo se entreguen al destinatario una vez. Con esta función implementada, no es necesaria una lógica adicional de deduplicación o prevención de pérdidas.

  • Conectividad entre aplicaciones: algunas soluciones de cola de mensajes pueden manejar el cifrado de mensajes, la transaccionalidad y otros aspectos de la comunicación entre aplicaciones y servicios. Esto simplifica el desarrollo de aplicaciones y permite que distintas arquitecturas trabajen juntas.

  • Versatilidad: las soluciones de cola de mensajes pueden admitir varios lenguajes como, por ejemplo, Java, Node.js, COBOL, C/C++, Go, .NET, Python, Ruby y C#. También pueden admitir numerosas interfaces de programación de aplicaciones (API) y protocolos, incluidos MQTT, AMQP y REST, entre otros.

  • Resiliencia: la mensajería asincrónica garantiza que las fallas específicas de la aplicación no afectarán al sistema. Si un componente del sistema se detiene, todos los demás pueden seguir interactuando con la cola y procesando mensajes. Esto reduce la posibilidad de que la estabilidad de todo el sistema se vea afectada por la falla de una parte.

  • Seguridad mejorada: una cola de mensajes puede identificar y autenticar todos los mensajes y, en algunas soluciones de cola de mensajes, se pueden configurar para cifrar los mensajes en reposo, en tránsito o end-to-end. Esto puede contribuir a la seguridad general de las aplicaciones y/o la infraestructura.

  • Transferencias de archivos integradas: algunas soluciones de cola de mensajes incluyen características adicionales, como la capacidad de transferir archivos. Esto se puede utilizar como una alternativa al FTP dentro de las empresas donde se utilizan estas soluciones.
Casos de uso

Los entornos informáticos empresariales actuales son complejos y muy descentralizados. La mensajería facilita la integración de aplicaciones y servicios en diversas plataformas al proporcionar una red troncal de mensajería compartida única, sólida y segura. Esto ofrece protección contra la pérdida de datos y asegura que los sistemas continuarán funcionando, incluso con conectividad inestable.

Las colas de mensajes son especialmente adecuadas para integrar sistemas backend locales con servicios en la nube. En las arquitecturas de nube, las aplicaciones a menudo se dividen en componentes pequeños e independientes. Esto hace que sea más fácil diseñarlos y codificarlos, y también facilita la administración de su rendimiento. Las colas de mensajes permiten que estas aplicaciones desacopladas basadas en la nube se comuniquen entre sí o con sistemas locales.

Utilizar colas de mensajería aumentan la resiliencia de la arquitectura porque los mensajes pueden tener persistencia. Esto significa que se almacenan en el disco hasta que el servicio que recibe el mensaje confirma el procesamiento. Las colas de mensajería se pueden usar en escenarios que requieren altos niveles de seguridad, tolerancia a fallas y precisión, como el procesamiento de transacciones financieras, la reserva de viajes aéreos o la actualización de registros de cuidado de la salud de pacientes.

Las colas de mensajes también se pueden usar para habilitar aplicaciones y sistemas que residen en diferentes nubes (ya sean públicas o privadas) para comunicarse, incluso si se encuentran en diferentes países o en continentes remotos. El uso de una cola de mensajes aumenta la tolerancia a fallas y puede usarse para evitar que los datos se dupliquen o se pierdan en sistemas geográficamente y técnicamente dispares. Debido a que cada servicio dentro del sistema está desacoplado, o lógicamente separado de los demás, cada uno puede continuar funcionando si otros servicios o aplicaciones fallan o se detienen.

Las colas de mensajes funcionan en aplicaciones dispares, como registros de sistemas de transacciones tradicionales, IoT y dispositivos móviles. También admiten varias plataformas, como máquinas virtuales y contenedores, y habilitan la integración entre aplicaciones heredadas y las últimas soluciones actuales.

Cola de mensajes frente a…

Cola de mensajes frente a pub/sub
Las colas de mensajes utilizan un patrón de mensajería de punto a punto, en el que una aplicación (llamada remitente) envía un mensaje a la cola y otra aplicación (llamada receptor) obtiene el mensaje de la cola y lo consume. Debe haber una relación de uno a uno estrechamente acoplada entre el remitente y el consumidor, y cada mensaje debe consumirse solo una vez.

Si sus aplicaciones requieren que los mensajes se distribuyan a varias partes, se pueden combinar varias colas de mensajes o se puede utilizar un modelo de mensajería de publicación/suscripción (pub/sub).

En la mensajería pub/sub, la aplicación que produce el mensaje se denomina editor y las aplicaciones que lo consumen son los suscriptores. Cada mensaje se publica en un tema y cada aplicación que se suscribe a ese tema obtiene una copia de todos los mensajes publicados en él.

La mayoría de las soluciones de middleware de mensajería admiten los modelos de mensajería en cola de mensajes (punto a punto) y pub/sub.

Cola de mensajes frente a bus de mensajes
Un bus de mensajes (un tipo de bus de servicios empresariales o ESB) permite a los servicios un acceso ubicuo a los datos al tiempo que garantiza que permanezcan desacoplados y funcionales de forma independiente dentro de una arquitectura de sistema distribuido. Cuando utiliza un bus de mensajes, todos los servicios o aplicaciones deben compartir tipos de datos comunes, un conjunto de comandos común y protocolos de comunicación comunes (aunque pueden estar escritos en diferentes lenguajes). Los consumidores pueden determinar cómo usan los mensajes.

Si las aplicaciones desacopladas deben comunicarse por medio de un bus de mensajes, los mensajes deben transformarse para que sean todos del mismo tipo. Por el contrario, las colas de mensajes transportan mensajes, sin importar si son del mismo tipo o de diferentes tipos.

Cola de mensajes frente a servicios web
Las aplicaciones pueden comunicarse directamente a través de servicios web o API basadas en protocolos estándar, por ejemplo, el protocolo de acceso a objetos simple (SOAP) o HTTP, en lugar de a través de middleware de mensajería. Los servicios web se utilizan ampliamente en sistemas distribuidos, son relativamente simples y fáciles de implementar, lo que los convierte en una alternativa viable a las colas de mensajes en ciertos casos de uso y escenarios.

Sin embargo, a diferencia de las colas de mensajes, los servicios web no pueden garantizar la entrega de mensajes. Si el servidor o la conexión fallan, debe desarrollar la capacidad para manejar el error dentro del cliente. Los servicios web también carecen de modelos de publicación/subdistribución. El middleware de mensajería ofrece una mayor tolerancia a fallas y una mejor capacidad para manejar tráfico pesado o ráfagas de actividad.

Para obtener más información sobre cuándo usar las API, cuándo usar la mensajería o cuándo usar ambas, consulte "Introducción a las API y la mensajería".

Cola de mensajes frente a bases de datos
Las bases de datos se pueden usar como una alternativa a las colas de mensajes en ciertas situaciones, pero la mayoría de las veces tienen diferentes propósitos y no son fácilmente intercambiables. Las bases de datos se utilizan con mayor frecuencia para el almacenamiento y le permiten acceder a la misma información una y otra vez. Las colas de mensajes no se pueden utilizar con fines de almacenamiento. Una vez que se ha consumido un mensaje, se elimina de la cola.

Es posible diseñar una funcionalidad similar a una cola de mensajes en una base de datos, pero requiere un gran esfuerzo de codificación y conocimiento. Las bases de datos solo se pueden usar para replicar estructuras de cola simples y no son escalables para aplicaciones más grandes. 

Para obtener más información sobre las bases de datos y sus capacidades, vea "Una breve descripción del panorama de las bases de datos".

Message-queuing-as-a-service

Las colas de mensajes son tradicionalmente administradas por equipos dedicados dentro de TI. Pero la entrega "como servicio", mediante una cola de mensajes alojada en la nube, permite que los usuarios individuales o de línea de negocio (LOB) soliciten cambios en la infraestructura de mensajería por su cuenta, por medio de un portal, lo que puede aumentar la agilidad.

La cola de mensajes como servicio funciona naturalmente bien dentro de las arquitecturas sin servidor o de microservicios comunes en el desarrollo nativo en la nube. Debido a que se ofrece en un modelo de servicio alojado en la nube, el proveedor de la nube se encarga de todo el suministro, la instalación y el mantenimiento de su infraestructura de mensajería, y está alojado en la nube.

Tutoriales

Estos tutoriales le ayudarán si es nuevo en el desarrollo de aplicaciones que se comunican a través de IBM MQ:

Estos recursos adicionales le brindarán una descripción general más completa:

Soluciones relacionadas
IBM Cloud Pak for Integration

IBM Cloud Pak for Integration combina la automatización de IA y un conjunto completo de herramientas de integración para conectar aplicaciones y datos en cualquier entorno local o en la nube.                     

Explore Cloud Pak for Integration
Soluciones de nube híbrida

Descubra cómo las soluciones de nube híbrida desarrolladas con IBM Cloud pueden ayudar a su organización a migrar a la nube, modernizar las aplicaciones existentes y crear nuevas, que sean nativas en la nube.

Explore las soluciones de nube híbrida
Recursos ¿Qué es el middleware?

El middleware acelera el desarrollo de aplicaciones distribuidas al simplificar la conectividad entre aplicaciones, componentes de aplicaciones y fuentes de datos de backend.

¿Qué son las API REST?

Las API REST proporcionan una forma flexible y ligera de integrar aplicaciones y se han convertido en el método más común para conectar componentes en arquitecturas de microservicios.

Una introducción a las API y la mensajería

Descubra cuándo usar las API, cuándo usar la mensajería o cuándo usar ambos.

Dé el siguiente paso

IBM® Cloud Pak for Integration es una plataforma de integración híbrida que aplica la funcionalidad de la automatización de IA de circuito cerrado para admitir múltiples estilos de integración. La plataforma proporciona un conjunto integral de herramientas de integración dentro de una experiencia única y unificada para conectar aplicaciones y datos en cualquier entorno local o en la nube. Las funcionalidades de Cloud Pak for Integration desbloquean activos y silos de datos de negocio como API, conectan aplicaciones locales y en la nube y protegen la integridad de los datos en tránsito con la mensajería empresarial.

Explore IBM Cloud Pak for Integration