Solución:
Utilice siempre REST. Es el enfoque de integración más moderno, avanzado y escalable disponible en la actualidad. El equilibrio de carga de un servicio basado en REST se logra simplemente con un equilibrador de carga HTTP de hardware o software y puede considerarse tan gratuito como el equilibrio de carga en JMS.
MOM (Middleware orientado a mensajes) no se 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 las solicitudes de recuperación de datos, 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 de los mismos datos pueden ser atendidas por una caché HTTP. Esto significa que a medida que aumenta el volumen de solicitudes con el tiempo, un sistema basado en MOM verá cómo aumenta la carga del servidor al mismo ritmo que las solicitudes. Un sistema basado en REST verá cómo la carga del servidor aumenta a un ritmo más lento que las solicitudes.
MOM lo tentará con mensajes de fuego y olvido con entrega garantizada, solo para morderlo con el problema de la cadena de custodia.
MOM es terrible para la solicitud-respuesta sincrónica, ya que fallará lentamente (es decir, esperará el tiempo de espera) cuando el servidor esté inactivo. Cuando una solicitud va a fallar, desea que falle rápidamente. Una solicitud HTTP a un servicio basado en REST fallará inmediatamente (en la conexión TCP) si el servidor no funciona.
MOM es útil para la mensajería asincrónica de solicitud-respuesta, pero luego se quedará 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, Mensaje o NoSQL Base de datos). A menudo, el esfuerzo de implementación adicional no compensa las ventajas percibidas de la asincronía. Además, los servicios basados en REST admiten solicitudes asincrónicas si realmente las necesita. 202 Aceptado es tu amigo en esta situación.
Finalmente, el uso del almacenamiento en caché permite que los sistemas basados en REST implementen integraciones basadas en extracción, 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 de 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 fuente RSS) que B sondea para obtener nuevos datos (de la misma manera que su lector de RSS busca nuevos artículos). Cuando B falla, en el ejemplo de MOM, el equipo de soporte tendrá que monitorear las colas de mensajes para asegurarse de que no se desborden, mientras que otra persona recupera la B. En el ejemplo de REST, el equipo de soporte solo tiene que preocuparse de que B vuelva a funcionar. No hay mucha diferencia cuando A falla. En el ejemplo de MOM, B no lo sabe y no le importa. En el ejemplo de REST, B sabe que A está inactivo, pero todavía no le importa porque obviamente no hay nuevos datos de A cuando está inactivo. Inicialmente, el sondeo de que la integración basada en extracción requiere costuras muy ineficaces, sin embargo, el almacenamiento en caché HTTP hace que esto no sea un problema.
En otras palabras, en lugar de invertir en un servidor JMS, invierta en un buen equilibrador de carga HTTP de almacenamiento en caché.
No se pueden comparar estas dos tecnologías.
DESCANSAR es un servicio / patrón que le brinda una forma organizada de acceder a recursos sin estado.
Sistemas MOM / JMS es un patrón diseñado para compartir mensajes entre sistemas. Se trata de entrada y salida de datos de forma fiable.
Realmente no se puede comparar JMS con REST porque resuelven diferentes problemas.
Pero si su pregunta es más en la línea de ¿necesito una interfaz REST para mis colas JMS? Todo es una situación, he visto a personas usar REST para proteger a los clientes ligeros de la lógica necesaria para poner en cola los mensajes en JMS. Por ejemplo, si tiene un cliente de Android que quiere hablar con JMS, es mucho más difícil hacerlo ingenuamente que enviar mensajes a una interfaz de “descanso” que luego puede traducir y enviar a un JMS.