2010-10-29 119 views
1

我們有一個項目,我們希望使用JMS將2個企業系統鏈接在一起。簡而言之,系統1向隊列發送消息。 Systems2接收該消息,在後臺執行大約30分鐘的整個負載處理,然後將消息發送回隊列以供System1接收。企業應用程序之間的JMS

我們可以擺脫1隊列還是需要2? 如果我們有2個隊列,那麼System1寫入隊列1,System2啓動。 當system2準備就緒時,它將寫入隊列2並且System1將其讀取。

哪種方法最好? 如果有人對這些方法或任何更好的解決方案的任何限制都知道,那麼請務必份額

感謝 達明

回答

1

您可以使用一個隊列選擇,但我會建議保持簡單,用2個隊列如你所述。我更喜歡將消息類型分爲不同的隊列,我想你會發現最容易管理的。

一個隊列在很大程度上只是一個消息桶的邏輯名稱,並且如果比單個隊列中的所有消息有更多的開銷,則很少。

+0

是的,只是快速看過選擇器,但我完全同意保持簡單。我不認爲我們需要通過使用選擇器來過度複雜化這個項目 – Damien 2010-10-29 16:27:58

1

如果這是一個專用的對等接口,並且這些應用程序都不像服務器那樣工作,那麼您可以使用單個隊列。但是,該模型不支持客戶端 - 服務器模式。另一方面,客戶端 - 服務器模式支持點對點接口以及客戶端 - 服務器接口,並且實現起來並不困難,所以爲什麼不使用它?

具體來說,一個服務器監聽一個衆所周知的隊列。任何想要驅動該服務的應用程序都會將消息發送到衆所周知的隊列。該消息包含回覆目標的地址,服務器將回復發送到該目標。通過這種方式,服務器應用程序可以處理來自網絡上任何地方的許多相對匿名(或者如果需要,則進行身份驗證)客戶端的請求

此方法還支持客戶端和服務器隊列不在同一個消息引擎上。它支持以更高性能的FIFO模式訪問隊列。它處理快速生產者的經典異步消息傳遞情況,消耗速度慢於單個隊列。它支持動態回覆目的地。它允許應用程序彼此獨立地重新分配。如果你有什麼是真正的點對點,沒有客戶端 - 服務器模式的元素,那麼這個架構也支持這一點。