2013-02-23 63 views
2

JMS或消息傳遞確實很好地捆綁了不同的應用程序,並形成了許多ESB和SOA體系結構的基礎結構。消息傳遞是請求/回覆的良好實現

然而,應用程序A需要來自應用程序B上的服務的即時響應,例如,需要訂單的供應細節或需要立即確認某些更新。從性能的角度來看,Messaging是正確的解決方案嗎?通常,客戶端將連接到隊列上的MoM - 然後,必須有空閒的監聽器纔會接收消息並轉發給服務器端處理器 - 該服務器端處理器將處理響應並將其發送回隊列或主題,並請求客戶將遵循相同的流程並將其提取出來。如果消息的大小很大,那麼MoM將不得不考慮這個因素。

讓我懷疑Http是否是更好的解決方案來訪問這樣的解決方案,而不是通過消息傳遞路徑?我已經看到許多應用程序使用像AMQ或TIBCO Rvd這樣的MoM實際用於立即請求/響應 - 但是這是不好的設計,或者是一些微調或設置使它與Http相同。

回答

2

這真的取決於您的要求。通常短信服務將支持一個或所有的以下內容:

  • 保證傳遞
  • 事務
  • 持久性(即消息一直持續到交付,即使系統中interrim失敗)

HTTP連接不能[很容易]實現這些屬性,但是如果你不需要它們,那麼我想你可以說「簡單」HTTP將提供更簡單和更輕量級的s olution。 (強調「簡單」,因爲一些消息傳遞會通過HTTP進行)。

我不認爲通過消息傳遞實現的請求/響應本身就是糟糕的設計。我的意思是,這是事情....你在執行這個過程的兩個方面嗎?如果沒有,並且你已經有了一個建立的消息服務來響應請求,除了所有其他的考慮外,這似乎是要走的路...並繞過使用HTTP重新實現,因爲一些設計概念需要一些公平的在我看來,它背後有很強的推理。

但是反過來也是如此。如果您已經擁有HTTP可訪問資源,並且您沒有任何可能會提供更強大的消息傳遞解決方案的超級嚴格要求,那麼我不會強制要求其沒有擔保的地方。

如果你是完全compulata tabula-rasa,你必須從零開始實施雙方......然後.....在這裏發佈另一個問題的一些細節! :)

+0

謝謝。那麼對於新項目,並且希望爲JMS/HTTP中的哪種服務設置一些標準。例如訂購過程 - 雖然它可能會在提交訂單後仍然執行一系列短暫的自動化事件,但我們可以開火併忘記 - 因此JMS非常適合。但是對於某些位,比如我想要一個服務的狀態 - 目前這是通過JMS,我們正在考慮轉移到HTTP。 - 我承認,我們沒有做任何性能測試,但試圖收集,如果反之,在immediete響應比JMS更好的情況下。更改代碼很好 - 只需將連接API從JMS – Soumya 2013-03-01 16:51:39

+0

更改爲HTTP hi Nicholas - 根據我上面的評論,您可以進一步評論嗎?謝謝 – Soumya 2013-03-04 15:34:28

+1

對於你的兩個例子,它們在每種情況下聽起來都是合適的。JMS非常擅長Fire-n-Forget,但對於更多類似於實用程序的事情(如狀態檢查),使用HTTP是有意義的,並且還簡化了調用並擴展了潛在客戶羣(發佈WGET更容易命令,而不是發送JMS消息....) – Nicholas 2013-03-04 16:36:37