2010-09-02 20 views
18

Necesito desarrollar un sistema que acepte pedidos y devuelva la confirmación. Los pedidos pueden provenir de clientes java o no java.Diferencia entre JMS y servicio web

No estoy seguro si ir a la implementación del servicio web o JMS.

Cualquier sugerencia ...

Respuesta

21

JMS es una API que abstrae middleware de mensajería, como ActiveMQ o IBM MQSeries.

middleware de mensajería tiene un paradigma de almacenamiento y hacia adelante y mensajes asíncronos que pasa, mientras que los servicios web tienden a promover un procedimiento síncrono llamar paradigma. En sistemas distribuidos donde muchas cosas pueden salir mal, lidiar con cosas de manera asincrónica tiende a enfocar mejor la mente a las cosas que necesita hacer cuando parte del sistema no está disponible o tiene un bajo rendimiento y el código necesario para tratar eso tiende a ser una mucho menos complicado.

partes Clustering vuelto trivial si tiene varios servidores que escuchan en la misma cola de equilibrio, el paralelismo y la carga es gratis en este caso.

Personalmente encuentro JMS mucho más fácil de trabajar y más robusto y fiable que los servicios web, pero el middleware de mensajería debe apoyar todas las plataformas que desea utilizar. Si todos los componentes que necesitan hablarse están bajo su control, consideraría seriamente un middleware de mensajería con una interfaz JMS.

Si la otra parte es externa, probablemente sea la regla de Servicios web, y en ese caso podría pensar en usar una capa delgada para convertir el servicio web externo en una infraestructura interna de mensajes, de modo que aún tenga la mayoría de las ventajas.

si es "simplemente palmadas una API remota en una aplicación web" entonces por supuesto que no paga bien a los mensajes de configuración desincronizado.

+0

Por favor, vea esta pregunta. http://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration Gracias por su tiempo. – Kumar

0

Por el amor interoperabilidad, utilice un servicio web. JMS se usa poco fuera del mundo de Java.

+1

También el Siempre pensé que la idea detrás de JMS era la capacidad de la cola de mensajes donde como un servicio Web es como una llamada a la API y directa. También te sugiero que consideres REST como una implementación –

+0

JMS, por definición, es * solo * usado en el mundo Java, porque es solo una API. Es perfectamente capaz de hablar con sistemas que no son de Java, sin embargo, ese es el punto. – skaffman

5

Puede usar ambos dependiendo de sus requisitos de interoperabilidad, escala, distribución e integración.

servicio web aproximaciones utilizando SOAP, XML RPC y de descanso sean algo completamente interoperable a partir de la utilización de HTTP como el protocolo. Desde el lado del servicio, es posible que reciba una solicitud de servicio web y luego marque en un mensaje. Su mensaje podría ser entregado a un bus de mensajería.

JMS es una API razonable para interactuar con un bus de mensajería y he encontrado que Active/MQ es muy bueno aquí. Active/MQ es compatible con JMS en muchos idiomas.

con la mensajería se puede utilizar la petición/respuesta del patrón de integración de empresa para recibir respuestas y devolverlos a través de su servicio web. Sin embargo, piense en el mérito de proporcionar retroalimentación inmediata sobre si el pedido ha sido procesado versus retroalimentación del hecho de que se ha recibido un pedido; es posible que no necesite implementar la solicitud/respuesta para confirmar que se ha recibido una orden.

Los beneficios de la mensajería se pueden encontrar aquí: http://www.eaipatterns.com/Messaging.html

Incluso puede que desee ver en Apache Camel para simplificar el desarrollo de capas de servicios altamente escalables y distribuidas.

+0

Podría dar alguna orientación sobre esta pregunta. http://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration Gracias por su tiempo. – Kumar

Cuestiones relacionadas