2010-05-19 24 views
26

En mi equipo de trabajo, utilizamos mucho la tecnología de IBM MQ para la comunicación entre aplicaciones. Lo he visto últimamente en Hacker News y en otros lugares sobre otras tecnologías de MQ como RabbitMQ. Tengo un conocimiento básico de lo que es (un área comúnmente revisada para poner y recibir mensajes), pero ¿qué quiero saber exactamente para qué sirve? ¿Cómo sabré dónde quiero usarlo y cuándo? ¿Por qué no simplemente quedarse con formas más rudimentarias de mensajes entre procesos?¿Qué es un MQ y por qué quiero usarlo?

Respuesta

40

Todas las explicaciones hasta ahora son precisos y al punto - pero podrían faltar algo: uno de los principales beneficios de la cola de mensajes: la capacidad de recuperación.

Imagine esto: necesita comunicarse con otros dos o tres sistemas. Un enfoque común en estos días serán los servicios web, que está bien si necesita respuestas de inmediato.

Sin embargo, los servicios web pueden estar caídos y no disponibles, ¿qué hace entonces?Poner su mensaje en una cola de mensajes (que tiene un componente en su máquina/servidor, también) normalmente funcionará en este escenario: su mensaje simplemente no se entrega y se procesa en este momento, pero lo hará más tarde, cuando el otro lado del servicio vuelve en línea.

Por lo tanto, en muchos casos, usar colas de mensajes para conectar sistemas dispares es una manera más confiable y más sólida de enviar y recibir mensajes. No funciona bien para todo (si desea saber el precio actual de para MSFT, poner esa solicitud en una cola podría no ser la mejor de las ideas), pero en muchos casos, como hacer un pedido en su cola de mensajes del proveedor, funciona realmente bien y puede ayudar a aliviar algunos de los problemas de confiabilidad con otras tecnologías.

+0

Caso de uso muy interesante, tiene mucho sentido para mí. ¡Gracias! – daveslab

+1

Entonces, ¿qué haces si el servidor MQ está caído? No es más resistente que un servicio web, ¿o sí? –

+1

@RobHolmes: por lo general, aún puede * poner * en su cola local, se transmitirá al servidor de cola cuando se realiza una copia de seguridad, y ** sí **, ** ES ** más resistente que una web típica servicio ..... –

2

MQ significa simplemente Message Queue.

Se podría usar uno cuando se necesita para enviar un mensaje de forma fiable entre aplicaciones entre procesos/multiplataforma/que no depende del tiempo.

La cola de mensajes recibe el mensaje, lo coloca en la cola correcta, y espera a que la aplicación para recuperar el mensaje cuando esté listo.

6

Se supone que los sistemas de cola de mensajes le otorgan varias bonificaciones. Entre los más importantes están el comportamiento de monitoreo y transacción.

El diseño transaccional es importante si desea ser inmune a fallas, como un corte de energía. Imagine que desea notificar a un sistema bancario sobre la extracción de dinero en cajeros automáticos, y debe hacerse exactamente una vez por solicitud, sin importar qué servidores fallaron temporalmente en el medio. Los sistemas MQ le permiten coordinar transacciones en múltiples bases de datos, MQ y otros sistemas.

Huelga decir que estos sistemas son muy lentos en comparación con los tubos 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 su lugar, 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.

sistemas MQ normalmente permiten a los usuarios ver el contenido de la cola, escribir plugins, queus clara, etc.

+0

¡Buena respuesta, gracias por su contribución! – daveslab

11

MQ es sinónimo de cola de mensajes.

Es una capa de abstracción que permite que múltiples procesos (probables en máquinas diferentes) para comunicarse a través de varios modelos (por ejemplo, punto a punto, publicar suscribir, etc.). Dependiendo de la implementación, se puede configurar para cosas como fiabilidad garantizada, informe de errores, seguridad, descubrimiento, rendimiento, etc.

Puede hacer todo esto manualmente con conectores, pero es muy difícil.

Por ejemplo: supongamos que desea procesos para comunicarse, pero uno de ellos puede morir en el medio y más tarde ser reconectado. ¿Cómo se aseguraría de que no se pierdan los mensajes intermedios? Las soluciones de MQ pueden hacer eso por usted.

0

Las colas de mensajes son la base de muchos de los patrones descritos en el libro de 'integración Patrones de la empresa' clásico y website.

0

referencia: los servicios web pueden estar caídos y no disponibles, ¿qué haces entonces? Como una extensión de eso; ¿Qué sucede si su red local y su PC local están caídas también? Mientras espera a que el sistema recupere los sistemas implementados dependientes en otra parte que esperan que los datos necesiten ver una secuencia de datos alternativa. De lo contrario, esa podría no ser una respuesta "en tiempo real" suficientemente buena para los requisitos de Internet de las Cosas (IOT) de hoy y muy pronto en el futuro.

si desea un verdadero almacenamiento paralelo, no volátil de varias secuencias FIFO (al menos en algún punto a lo largo de la cadena de señal) use una memoria FPGA y FRAM. FRAM funciona a velocidad de reloj y los dispositivos FPGA pueden reprogramarse sobre la marcha, agregando y eliminando, sin embargo, se necesitan muchos flujos de datos independientes paralelos (por supuesto, dentro de las restricciones establecidas).

Cuestiones relacionadas