Saltar al contenido

Publicación subscripción vs cola de mensajes

Compartir en:

Los sistemas de publicación/subscripción y cola de mensajes se consideran modelos de comunicación indirecta, normalmente necesitan de un intermediario encargado de gestionar los eventos generados, ya sea mediante suscripción o mediante cola.

PUB/SUB

Los modelos de publicación/suscripción están basados en sistemas donde existen dos roles de funcionamiento específicos, por un lado, existen los editores que son los que publican eventos, por el otro los subscriptores, que son los que se suscriben para poder consumir la información.

En este contexto, los intermediarios son la clave, son estos los que conocen los subscriptores y cada vez que un evento es publicado, se encargan de enviar las notificaciones correspondientes. Como podemos ver, es una comunicación uno a muchos asíncrona.

Dadas estas características, observamos un desacoplamiento espacial, dado que el editor no conoce realmente a los subscriptores, además de un desacoplamiento temporal, los emisores envían eventos y los subscriptores los consumen no necesariamente en el mismo momento.

En resumen, podemos definir las siguientes características:

  • Necesita un intermediario
  • Modelo asíncrono
  • Desacoplamiento espacial y temporal
  • Características de comunicación uno a muchos

Cola de mensajes

Los modelos de cola de mensajes, sin embargo, se caracterizan por una comunicación uno a uno donde el editor o emisor envía su información a una cola de mensajes, donde esta queda almacenada para su posterior tratamiento por parte del destinatario del mensaje o receptor.

Generalmente se utilizan colas FIFO (first in first out) pero es habitual para dar más rendimiento que los mensajes se etiqueten con ciertas prioridades para ganar agilidad y permitir configuraciones más heterogéneas y eficientes.

Dadas las características del modelo, podemos deducir que la comunicación es asíncrona, existiendo también un desacople temporal y espacial. Los mensajes son enviados a una cola que los almacena de manera persistente, estos son tratados por los receptores sin necesidad de coincidir temporalmente entre sí, desconociendo el emisor el destinatario de los mensajes.

En resumen, podemos definir las siguientes características:

  • Necesita un intermediario
  • Modelo asíncrono
  • Desacoplamiento espacial y temporal
  • Características de comunicación uno a uno

Ejemplos

Vemos que los modelos realmente tienen más características en común que diferencias. Podemos destacar el modelo de comunicación que utilizan como principal diferenciador.

Publicación/suscripción utiliza una comunicación uno a muchos y el modelo de colas uno a uno, lo que los hace más adecuados para funcionar en entornos diferenciados y con exigencias de los sistemas distintas.

Por ejemplo, podemos ver sistemas de publicación/suscripción como:

  • MQTT (enlace): MQTT es un protocolo de transporte de mensajería de publicación/suscripción de servidor cliente. Es ligero, abierto, simple y diseñado para que sea fácil de implementar. Estas características lo hacen ideal para su uso en muchas situaciones, incluidos entornos restringidos, como para la comunicación en contextos de máquina a máquina (M2M) e Internet de las cosas (IoT) donde se requiere una pequeña huella y/o el ancho de banda de la red es bastante limitado.
Fuente – mqtt.org
  • DDS (enlace): El Servicio de distribución de datos es un protocolo de Middleware y un estándar API para la conectividad centrada en datos. Integra los componentes de un sistema juntos, proporcionando conectividad de datos de baja latencia, confiabilidad extrema y una arquitectura escalable que las aplicaciones empresariales y de misión crítica de Internet de las cosas (IoT) necesitan.

Podemos ver ejemplos de sistemas de cola como:

  • Apache Qpid (enlace): Apache Qpid es un sistema de mensajería de código abierto que implementa un protocolo de cola de mensajes avanzado. Proporciona gestión de transacciones, encolado, distribución, seguridad, gestión, agrupación en clústeres, federación y compatibilidad con varias plataformas de diferentes tipos y sistemas. La API de Apache Qpid admite varios lenguajes de programación y viene con corredores de C ++ (para Perl, Python, Ruby, .NET, etc.) y Java (API de JMS).
  • RabbitMQ (enlace): RabbitMQ es un software de intermediario de mensajes de código abierto (a veces llamado Middleware orientado a mensajes) que implementa un protocolo de cola de mensajes avanzado además de otras muchas características más avanzadas y específicas.

Juan Ibero

Inmerso en la Evolución Tecnológica. Ingeniero Informático especializado en la gestión segura de entornos TI e industriales, con un profundo énfasis en seguridad, arquitectura y programación. Siempre aprendiendo, siempre explorando.

Compartir en:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *