2010-09-02 164 views
18

我需要開發一個接受訂單並返回確認的系統。訂單可能來自java或非java客戶端。JMS和Web服務之間的區別

不確定是否要進行Web服務實現或JMS。

任何建議...

回答

21

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

消息傳遞中間件有一個存儲轉發範例和異步消息傳遞,而Web服務傾向於促進同步過程調用範例。在分佈式系統中,很多可能會出錯的問題,異步處理事務往往會更好地將精力集中在當系統的一部分不可用或執行不力時需要做的事情上,而代碼需要處理的往往是很少複雜。

如果您有多個服務器偵聽同一個隊列,那麼羣集部分就變得微不足道了,在這種情況下,並行和負載平衡是免費的。

就我個人而言,我發現JMS比Web服務更容易使用,更健壯可靠,但消息傳遞中間件必須支持您要使用的所有平臺。如果所有需要彼此交談的組件都在您的控制之下,我會給予一個帶有JMS接口的消息傳遞中間件。

如果對方是外部的,那麼可能是Web服務規則,在這種情況下,您可以考慮使用精簡層將外部Web服務轉換爲內部消息傳遞基礎結構,這樣您仍然可以獲得大部分優勢。

如果它「只是將一個遠程API放在一個webapp上」,那麼它當然不會支付設置異步消息。

+0

請看這個問題。 http://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration 感謝您的時間。 – Kumar 2013-11-07 05:27:24

0

爲了互操作性,使用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

5

您可以同時使用這取決於您的互操作性,規模,分佈和集成要求。

使用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://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration 感謝您的時間。 – Kumar 2013-11-07 05:28:30

相關問題