JMS和Web服务之间的区别

问题描述:

我需要开发一个接受订单并返回确认的系统。订单可能来自java或非java客户端。JMS和Web服务之间的区别

不确定是否要进行Web服务实现或JMS。

任何建议...

JMS是一个抽象消息中间件的API,如ActiveMQ或IBM MQSeries。

消息传递中间件有一个存储转发范例和异步消息传递,而Web服务倾向于促进同步过程调用范例。在分布式系统中,很多可能会出错的问题,异步处理事务往往会更好地将精力集中在当系统的一部分不可用或执行不力时需要做的事情上,而代码需要处理的往往是很少复杂。

如果您有多个服务器侦听同一个队列,那么群集部分就变得微不足道了,在这种情况下,并行和负载平衡是免费的。

就我个人而言,我发现JMS比Web服务更容易使用,更健壮可靠,但消息传递中间件必须支持您要使用的所有平台。如果所有需要彼此交谈的组件都在您的控制之下,我会给予一个带有JMS接口的消息传递中间件。

如果对方是外部的,那么可能是Web服务规则,在这种情况下,您可以考虑使用精简层将外部Web服务转换为内部消息传递基础结构,这样您仍然可以获得大部分优势。

如果它“只是将一个远程API放在一个webapp上”,那么它当然不会支付设置异步消息。

+0

请看这个问题。 http://*.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration 感谢您的时间。 – Kumar 2013-11-07 05:27:24

为了互操作性,使用web服务。 JMS在Java世界之外很少使用。

+1

此外,我一直认为JMS背后的想法是排队消息的能力,其中Web服务就像API调用和直接。我还建议你考虑将REST作为实现 – 2010-09-02 06:35:51

+0

根据定义,JMS仅*用于Java世界,因为它只是一个API。尽管如此,它完全能够与非Java系统交流,这就是重点。 – skaffman 2010-09-02 07:34:23

检查链接

difference between using JMS/Messaging Middleware versus Web services

Messaging, JMS and Web Services

Web Services HTTP vs. JMS

Choosing among JCA, JMS, and Web services

Java Message Service

Web service

所以,如果通信应用程序是基于Java的使用JMS,如果可能不同,那么Web服务......那就是我所遵循的。

您可以同时使用这取决于您的互操作性,规模,分布和集成要求。

使用SOAP,XML RPC和REST的Web服务方法在使用HTTP作为协议的情况下提供了相当的互操作性。从服务端,您可能会收到一个Web服务请求,然后将其编入消息。你的消息可以被传送到消息总线。

JMS是一个合理的API接口与消息总线,我发现Active/MQ非常好这里。 Active/MQ支持多种语言的JMS。

通过消息传递,您可以利用请求/应答企业集成模式来接收响应并通过您的Web服务返回它们。然而,考虑提供即时反馈,以确定订单是否已经处理完毕,并反馈收到订单的事实;您可能不需要执行请求/回复来确认已收到订单。

消息的好处是可以在这里找到:http://www.eaipatterns.com/Messaging.html

您甚至可以想看看Apache Camel简化高度可扩展的分布式服务层的发展。

+0

你能否就这个问题提供一些指导。 http://*.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration 感谢您的时间。 – Kumar 2013-11-07 05:28:30