¿Cuándo usar JMS y cuándo usar REST? [cerrado]


Además de la naturaleza asíncrona/síncrona de un problema en particular y teniendo en cuenta que las mamás (en este caso habiendo elegido JMS) ofrecen características adicionales de forma gratuita como equilibrio de carga y otros, ¿qué más se puede considerar al elegir JMS en lugar de REST o viceversa?

Gracias

Author: jmdev, 2012-03-08

2 answers

Utilice siempre REST. Es el enfoque de integración más moderno, avanzado y escalable disponible en la actualidad. Equilibrio de carga un servicio basado en REST se logra simplemente con el equilibrador de carga HTTP de hardware o software y se puede considerar tan libre como el equilibrio de carga en JMS.

MOM (Middleware orientado a mensajes) no escala fácilmente (pero puede escalar lo suficientemente grande para sus necesidades). REST funciona a escala web.

MOM no tiene economías de escala . Para la recuperación de datos solicitudes, cada vez que se solicita un dato en particular, se debe enviar otro mensaje al servidor y el servidor debe responder. En un sistema basado en REST, las solicitudes para los mismos datos pueden ser atendidas por una caché HTTP . Esto significa que a medida que el volumen de solicitudes aumenta con el tiempo, un sistema basado en MOM verá que la carga del servidor aumenta al mismo ritmo que las solicitudes. Un sistema basado en REST verá el aumento de carga del servidor a un ritmo más lento que las solicitudes.

MAMÁ tentará tú con mensajes de fuego y olvido con entrega garantizada, solo para morderte con el problema de la cadena de custodia .

MOM es terrible para la solicitud-respuesta síncrona, ya que fallará lentamente (es decir, esperará el tiempo de espera) cuando el servidor esté inactivo. Cuando una solicitud va a fallar, usted quiere que falle rápido. Una solicitud HTTP a un servicio basado en REST fallará inmediatamente (en la conexión TCP) si el servidor está inactivo.

MOM es útil para los mensajes asincrónicos de solicitud y respuesta, pero luego se queda con el problema de dónde almacenar el estado entre la solicitud y la respuesta (Sugerencia: Sus opciones son Archivo o Base de datos Regular, el Mensaje o una Base de datos NoSQL ). A menudo, el esfuerzo adicional de implementación no vale la pena las ventajas percibidas de la asincronicidad. También los servicios basados en REST admiten solicitudes asíncronas si realmente lo necesita. 202 Aceptado es tu amigo en esta situación.

Finalmente, el uso del almacenamiento en caché permite basado en REST sistemas para implementar integraciones basadas en pull, que son mucho más fáciles de soportar. Por ejemplo, solo digamos que queremos mover datos del sistema A al sistema B. El enfoque MOM sería enviar mensajes de A a B. Un enfoque basado en REST sería crear un servicio de alimentación de datos en A (como una alimentación RSS) que B sondea para nuevos datos (de la misma manera que su lector RSS sondea para nuevos artículos). Cuando B falla, en el ejemplo MOM, el equipo de soporte necesitará monitorear las colas de mensajes para asegurarse de que no se desborden, mientras alguien más recupera la B. En el ejemplo DEL RESTO, el equipo de soporte solo tiene que preocuparse por obtener una copia de seguridad de B. No hay mucha diferencia cuando una falla. En el ejemplo de MAMÁ B no lo sabe y no le importa. En el RESTO ejemplo B sabe que A está abajo, pero todavía no le importa porque obviamente no hay nuevos datos de A cuando está abajo. Inicialmente, el sondeo que la integración basada en pull requiere costuras muy ineficientes, sin embargo, el almacenamiento en caché HTTP hace que esto no sea un problema.

En en otras palabras, en lugar de invertir en un servidor JMS, invierta en un buen equilibrador de carga HTTP de almacenamiento en caché.

 45
Author: Tom Howard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-15 11:09:22

No se pueden comparar estas dos tecnologías.

REST es un servicio/patrón para darle una forma organizada de acceder a recursos sin estado.

MOM Sysems / JMS es un patrón diseñado para compartir mensajes entre sistemas. Se trata de datos en, datos fuera de una manera confiable.


Realmente no se puede comparar JMS con REST bc resuelven diferentes problemas.


Pero si su pregunta está más en las líneas de ¿necesito una interfaz REST ¿para mis colas de JMS? Es toda la situación, he visto a la gente usar REST para proteger a los clientes ligeros de la lógica nessessary para poner en cola los mensajes en JMS. Por ejemplo, si usted tiene un cliente de Android que quiere hablar JMS, es mucho más difícil de hacer que ingenuamente frente a empujar los mensajes a un "resto" interfaz que luego puede traducir y empujar a un JMS.

 14
Author: Nix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-08 19:31:41