2011-12-29 76 views
2

我有一個非常簡單的應用程序使用ActiveMQ。它解決的用例將涉及發送小型原子主題消息。ActiveMQ持久主題連接設計意見購買

我在這個功能上的第一遍構建了一個連接到代理並根據需要重用它。但是,在閱讀一些文檔時,它似乎掛在了一個連接上,以便在JVM中潛在地佔用資源。

所以,我的困境是,我會不會承擔建立和拆除每條消息連接的開銷,還是會產生掛在大部分閒置資源上的代價。

我知道沒有一個明確的答案,真正的答案是「它取決於」,但真的很喜歡別人的一些見解和意見。

回答

2

我相信你應該知道兩個提到的標準。解決方案是使用連接池。在這種情況下,你共享連接,大部分時間不會創建新連接,並且連接池通常僅限於特定的連接數(這是我如何實現它的假設) - 以便它不會在JVM中不會佔用所有資源。

看一看PooledConnectionFactory的相關章節。

決定保持連接還是重新創建它們完全取決於您的使用場景。如果你打算定期發送消息 - 共享連接是正確的 - 因爲連接和會話(如果可能的話,建議在高流量下共享會話)是非常昂貴的操作。但是,如果你的消息發送不是那麼頻繁(每小時幾次?)) - 保持空閒連接不變是有意義的。

+0

謝謝,那絕對是正確的解決方案!我的負載測試運行速度明顯快於創建和銷燬或共享單個持久連接。 JAVA應用程序中的編碼更改是微不足道的。 – 2011-12-30 17:13:30