¿Cuándo usar el protocolo avanzado de mensajes en cola como RabbitMQ? [cerrado]

Respuestas:

25

Imagine que tiene un servicio web que puede aceptar muchas solicitudes por segundo. También tiene un sistema de contabilidad que hace muchas cosas, una de las cuales es procesar las solicitudes provenientes del servicio web.

Si coloca una cola entre el servicio web y el sistema de contabilidad, podrá:

  • tienen menos acoplamiento entre las dos aplicaciones, porque ahora ambas aplicaciones deben conocer los parámetros de configuración del sistema de gestión de colas y el nombre de la cola. Aquí el problema es que, por lo general, es más probable que muevas a otro servidor alguna aplicación que el sistema de gestión de colas
  • Si tiene muchas solicitudes en un corto período de tiempo, el sistema de contabilidad podrá procesarlas todas de todos modos
  • persisten algunas solicitudes si su número se vuelve realmente enorme

Por supuesto, podría tener situaciones más complejas en las que el número de sus aplicaciones es mucho mayor que dos y necesita administrar la comunicación entre ellas.

Виталий Олегович
fuente
1
1) ¿Cómo es A acoplado a B mejor que A acoplado a C y C acoplado a B?
Charlie
2) ¿Por qué no poner la cola en el sistema de contabilidad? ¿Por qué presentar una nueva pieza de caja negra móvil que necesita configuración adicional?
Charlie
2
@ Charlie sobre la pregunta 1, he modificado mi respuesta. Sobre la pregunta 2, ¿qué quiere decir exactamente al poner la cola en el sistema de contabilidad? ¿Desea usar una estructura de datos de cola? En ese caso, tendrá más código para escribir para mantenerlo. ¿Desea simular la cola utilizando una tabla de base de datos? Nuevamente, tendrá que escribir un buen código para administrar esa tabla. ¿Algo más en lo que no pensé?
Виталий Олегович
Escribo mal 1. Si la cola se coloca en el servicio web o la cola se coloca en la aplicación, queda un acoplamiento. Sin embargo, si la cola es externa a ambos, ahora tiene el doble de acoplamiento y 50% más de sistemas para administrar / puntos de falla. Si se selecciona una cola de terceros, también tendrá este nuevo paquete para aprender y configurar, y es probable que se vea afectado por innumerables funciones que no tiene interés en usar, funciones que se agregaron para hacer que la cola sea de uso general y útil para muchas más situaciones que la tuya
Charlie
@Charlie, presumiblemente se usaría un único intermediario de mensajes entre múltiples sistemas. O habría un solo proxy para el corredor. (En nuestro caso, estamos utilizando un único dispositivo de mensajería que puede manejar millones de mensajes por segundo para todos nuestros sistemas). Esto realmente crea un mayor desacoplamiento porque un sistema genera un mensaje y cualquier sistema interesado puede recibir ese mensaje y realizar la lógica adecuada. El único acoplamiento es a la cola misma.
Michael Brown
16

Además de proporcionar un búfer entre un servicio web y otro servicio de fondo, las colas de mensajes se pueden usar para escenarios más avanzados. Rabbit MQ (y otros productos maduros de Message Queue también conocidos como MOM - Middleware orientado a mensajes) se pueden configurar para enrutar y distribuir mensajes de acuerdo con diferentes reglas.

Por ejemplo, la técnica de enrutamiento Pub-Sub permite que una sola fuente envíe un mensaje y que muchos oyentes lo reciban. Esto es comúnmente utilizado por el software de comercio de acciones para mantener actualizados a los usuarios en el piso.

Además, debido al hecho de que la mayoría de las MOM tienen sdks para múltiples idiomas y plataformas, pueden usarse para integrar aplicaciones que están escritas en diferentes plataformas.

Estos son solo algunos de los escenarios habilitados por las MOM.

Michael Brown
fuente