tutorial que message-queue message-bus

tutorial - Message Queue vs Message Bus: ¿cuáles son las diferencias?



rabbitmq download (5)

Mensaje de bus

Un Bus de mensajes es una infraestructura de mensajería que permite que diferentes sistemas se comuniquen a través de un conjunto compartido de interfaces ( bus de mensajes ).

Fuente: EIP

Cola de mensajes

La idea básica de una cola de mensajes es simple:

  • Dos (o más) procesos pueden intercambiar información a través del acceso a una cola de mensajes del sistema común .

  • El proceso de envío coloca a través de algún módulo de paso de mensajes (OS) un mensaje en una cola que puede ser leído por otro proceso

Fuente: Dave Marshall

Fuente de imagen

Diferencia

Message Queue contiene la regla FIFO ( primero en entrar, primero en salir ) mientras que en Message Bus no.

Conclusión

A ambos LOOK les gusta hacer el mismo tipo de trabajo: pasar mensajes entre dos Aplicaciones o Módulos o Interfaces o Sistemas o Procesos , excepto una pequeña diferencia de FIFO

¿Y hay alguna? Para mí, MB conoce tanto a los suscriptores como a los editores y actúa como mediador, notificando a los suscriptores sobre nuevos mensajes (de hecho, es un modelo "push"). MQ, por otro lado, es más un modelo "pull", donde los consumidores sacan mensajes de una cola.

¿Estoy completamente fuera de pista aquí?


En general, cuando se trata de productos de software de proveedores, se usan indistintamente y no tienen las distinciones sólidas en términos de empujar o tirar como usted lo describe.

El BUS vs QUEUE es de hecho un concepto heredado, más recientemente derivado de sistemas como IBM MQ y Tibco Rendezvous. MQ era originalmente un sistema 1: 1, de hecho, una cola para desacoplar varios sistemas.

Por el contrario, Tibco fue (vendido como un) backbone de mensajería, donde podría tener múltiples editores y suscriptores sobre los mismos temas.

Sin embargo, ambos (y los nuevos productos de la competencia) pueden jugar en el espacio del otro en estos días. Ambos pueden configurarse para interrumpir, así como también para sondear nuevos mensajes. Ambos median las interacciones entre varios sistemas.

Sin embargo, la frase message-queue también se usa para bombas internas de mensajes intra-hilo y similares, y en este contexto, el uso es realmente diferente. Si piensa en la clásica bomba de mensajes de Windows, este es más bien el modelo de extracción que describe, pero en realidad es más intra-aplicación que inter-app o inter-box.


Ha habido un poco de desenfoque de las líneas entre estos dos conceptos, ya que algunos productos ahora admiten características que anteriormente pertenecían solo a una u otra categoría (por ejemplo, el Bus de servicio de Azure admite ambos enfoques).

COLA

Una cola de mensajes recibe mensajes de una aplicación y los pone a disposición de una o más aplicaciones en una forma de primero en entrar, primero en salir (FIFO). En muchos escenarios arquitectónicos, si la aplicación A necesita enviar actualizaciones o comandos a las aplicaciones B y C, entonces se pueden configurar colas de mensajes separadas para B y C. A escribiría mensajes separados para cada cola, y cada aplicación dependiente leería su cola propia (el mensaje se elimina al ser eliminado de la cola). Ni B ni C necesitan estar disponibles para que A envíe actualizaciones. Cada cola de mensajes es persistente, por lo que si una aplicación se reinicia, comenzará a retirarse de la cola una vez que vuelva a estar en línea. Esto ayuda a romper las dependencias entre los sistemas dependientes y puede proporcionar una mayor escalabilidad y tolerancia a fallas para las aplicaciones.

AUTOBÚS

Un bus de mensajes o bus de servicio proporciona una manera para que una (o más) aplicación comunique mensajes a una o más aplicaciones. Es posible que no haya garantías de que el orden de entrada sea el primero en llegar, y los suscriptores al bus pueden entrar y salir sin el conocimiento de los remitentes de mensajes. Por lo tanto, una aplicación A podría escribirse para comunicar actualizaciones de estado a la aplicación B a través de un bus de mensajes. Más tarde, se escribe la aplicación C que también puede beneficiarse de estas actualizaciones. La aplicación C se puede configurar para escuchar el bus de mensajes y tomar medidas basadas en estas actualizaciones también, sin requerir ninguna actualización de la aplicación A. A diferencia de las colas, donde la aplicación de envío agrega mensajes explícitamente a cada cola, un bus de mensajes usa una publicación / modelo de suscripción. Los mensajes se publican en el bus y cualquier aplicación que se haya suscrito a ese tipo de mensaje lo recibirá. Este enfoque permite que las aplicaciones sigan el principio de apertura / cierre, ya que se abren a cambios futuros y permanecen cerradas a modificaciones adicionales.

SOURCE


La forma en que lo veo es que la Cola de mensajes crea el Bus de mensajes . Los clientes (es decir, los nodos) pueden escuchar el bus de mensajes. Esto es particularmente cierto en el caso de que tenga un MQ transmitiendo mensajes a través de UDP, en otras palabras, está enviando mensajes a una dirección de difusión / multidifusión sin saber o preocuparse de quién los recibirá. Para obtener una descripción más detallada de este escenario, puede consultar este artículo .


La principal diferencia que realmente no se ha mencionado explícitamente en las otras respuestas es que un bus de mensajes permite a múltiples suscriptores, mientras que una cola encolará los elementos uno por uno a cualquier cosa que escuche la cola. Si quisiera que varios oyentes vieran los mismos elementos que salían de la cola, tendría que manejarlo usted mismo, un bus de servicio lo haría de forma inmediata.