2012-05-16 46 views
1

我有兩個應用程序(經典的java程序和一個批處理),必須相互處理。爲了儘可能地分離它們的通信,我正在考慮在應用程序之間使用隊列。使用隊列解耦Java應用程序:是最佳實踐嗎?

問題是第一個應用程序提供了一些Java對象,第二個應用程序必須轉換爲另一個對象類型(排序DTO模式),並使用新構造的對象執行一些業務邏輯和Web服務調用。在這種情況下使用隊列是最好的解決方案嗎?

如果是,是否有隊列(espacially想着大小和consumation時間)性能問題?實現這個隊列的最佳方式是什麼?

預先感謝您:)

+0

不知道一個批處理和Java程序 – Drona

+0

海蘭維卡斯,日Thnx爲您的利益之間你是如何交換Java對象!在我的場景中,經典應用程序將推送隊列中的一些java對象,批處理應用程序將消費,轉換爲其他對象類型,執行一些業務邏輯,然後通過Web服務調用將結果發送到另一個應用程序。 – Naoufel

回答

2

隊列可能是最好的解決方案,如果工作是長期運行和資源密集型的。例如,如果您的批量應用程序使用經典應用程序提供的每個內容發送大量電子郵件,則Queue是正確的解決方案。隊列

缺點包括它引入了管理開銷,就像你不必擔心,如果隊列中得到什麼過大,如何交付響應返回給典型應用等

如果批處理程序可以處理來自每個請求經典應用程序很快就會將批處理程序公開爲Web服務,所以經典應用程序可以立即得到響應。

+0

謝謝你的答案Alvin! 事實上,批處理應用程序有很長的處理時間。所以,如果隊列適應這種情況,我們會選擇它。 當你談到像隊列大小這樣的問題時,如何讓經典應用程序知道隊列另一端的事情是怎麼樣的,你有沒有關於隊列實現機制的推薦?最好的框架...等 再次感謝。 – Naoufel

+0

我不會去執行一個消息隊列我自己1)這將需要一段時間2)它重新發明輪子。我個人之前曾使用IBM MQ,但不幸的是我不認爲它是免費的。看看這個線程:http://stackoverflow.com/questions/731233/activemq-or-rabbitmq-or-zeromq-or,它比較了幾個開源消息隊列框架。 – Alvin

+0

真的非常感謝你Alvin!非常有趣的線程!我會看看,這將有助於做出選擇。 – Naoufel