activemq - sqs - amazon mq
¿Qué es un MQ y por qué quiero usarlo? (6)
En mi equipo en el trabajo, usamos mucho la tecnología IBM MQ para la comunicación entre aplicaciones. He visto últimamente en Hacker News y otros lugares sobre otras tecnologías MQ como RabbitMQ . Tengo una comprensión básica de lo que es (un área comúnmente marcada para poner y recibir mensajes), pero ¿qué quiero saber para qué sirve exactamente? ¿Cómo sabré dónde quiero usarlo y cuándo? ¿Por qué no limitarse a formas rudimentarias de mensajería entre procesos?
Las colas de mensajes forman la base de muchos de los patrones descritos en el libro clásico y el website "Patrones de integración empresarial".
MQ significa cola de mensajería.
Es una capa de abstracción que permite que múltiples procesos (probablemente en diferentes máquinas) se comuniquen a través de varios modelos (por ejemplo, punto a punto, publicación de suscripción, etc.). Dependiendo de la implementación, se puede configurar para cosas como confiabilidad garantizada, informes de errores, seguridad, descubrimiento, rendimiento, etc.
Puedes hacer todo esto manualmente con sockets, pero es muy difícil.
Por ejemplo: suponga que desea que los procesos se comuniquen, pero uno de ellos puede morir en el medio y luego volver a conectarse. ¿Cómo asegurarías que los mensajes interinos no se perdieran? Las soluciones MQ pueden hacer eso por ti.
MQ simplemente significa Message Queue.
Debería usar uno cuando necesite enviar de manera confiable un mensaje entre procesos / multiplataforma / multiplataforma que no dependa del tiempo.
La Cola de mensajes recibe el mensaje, lo coloca en la cola adecuada y espera a que la aplicación recupere el mensaje cuando esté lista.
Referencia: los servicios web pueden estar inactivos y no disponibles. ¿Qué hace entonces? Como una extensión a eso; ¿Qué pasa si tu red local y tu PC local también están caídas? Mientras espera que el sistema recupere los sistemas implementados dependientes en otro lugar, a la espera de que los datos necesiten ver un flujo de datos alternativo. De lo contrario, podría no ser una respuesta ''en tiempo real'' lo suficientemente buena para los requisitos de Internet de las Cosas (IOT) de hoy y muy pronto.
Si desea un verdadero almacenamiento paralelo, no volátil de varias transmisiones FIFO (al menos en algún punto a lo largo de la cadena de señales) use una memoria FPGA y FRAM. FRAM se ejecuta a la velocidad del reloj y los dispositivos FPGA se pueden reprogramar sobre la marcha agregando y eliminando, sin embargo, se necesitan muchos flujos de datos paralelos independientes (por supuesto, dentro de las limitaciones establecidas).
Se supone que los sistemas de colas de mensajes te dan varias bonificaciones. Entre los más importantes están el monitoreo y el comportamiento transaccional.
El diseño transaccional es importante si desea ser inmune a las fallas, como la falla de energía. Imagine que desea notificar a un sistema bancario sobre el retiro de dinero de un cajero automático, y debe hacerse exactamente una vez por solicitud, sin importar qué servidores fallaron temporalmente en el medio. Los sistemas MQ le permitirían coordinar transacciones a través de múltiples bases de datos, MQ y otros sistemas.
No hace falta decir que estos sistemas son muy lentos en comparación con las canalizaciones con nombre, TCP u otras herramientas no transaccionales. Si se requiere un alto rendimiento, no permitiría que sus mensajes se escriban a través del disco. En cambio, complicará su diseño: para lograr una comunicación exótica confiable y rápida, lo que empuja al diseñador a trucos realmente no triviales.
Los sistemas MQ normalmente permiten a los usuarios ver el contenido de la cola, escribir complementos, borrar queus, etc.
Todas las explicaciones hasta el momento son precisas y precisas, pero pueden faltar algo: uno de los principales beneficios de la cola de mensajes: la capacidad de recuperación.
Imagina esto: necesitas comunicarte con otros dos o tres sistemas. Un enfoque común en estos días serán los servicios web, lo que está bien si necesita respuestas de inmediato.
Sin embargo, los servicios web pueden estar inactivos y no disponibles. ¿Qué haces entonces? Poner su mensaje en una cola de mensajes (que también tiene un componente en su máquina / servidor) normalmente funcionará en este escenario; su mensaje simplemente no se entrega y, por lo tanto, se procesa ahora, pero lo hará más adelante, cuando el otro parte del servicio vuelve a estar en línea.
Entonces, en muchos casos, el uso de colas de mensajes para conectar sistemas dispares es una forma más confiable y más robusta de enviar y recibir mensajes. No funciona bien para todo (si desea conocer el precio actual de las acciones de MSFT, poner esa solicitud en una cola puede no ser la mejor idea), pero en muchos casos, como hacer un pedido en el mensaje de su proveedor. en cola, funciona realmente bien y puede ayudar a aliviar algunos de los problemas de confiabilidad con otras tecnologías.