2012-10-28 95 views
1

我已經定義如下駱駝碼頭-ActiveMQ的路線的新的ActiveMQ連接:從( 「碼頭:HTTP://0.0.0.0:8087/URL1」)是否駱駝碼頭-ActiveMQ的創建用於每個消息

。以(「ActiveMQ的:隊列:隊列1)

是否駱駝創建ActiveMQ的連接,然後使用由碼頭收到的所有郵件連接或創建每封郵件的ActiveMQ的連接

我打算使用連接池。對於activemq,由於我的消息流入速度非常高,我需要了解駱駝行爲以定義最大連接池大小。

回答

1

當發送消息時,ActiveMQ組件以及JMS組件基於Spring Framework的JMSTemplate。

正如您擔心的那樣,它會爲每條消息創建並關閉連接+會話+製作者,這不是最佳的明智表現。

按照activemq component documentation中的建議,您應該將其設置爲合併。然後你將重用連接/會話/製作者。

如果您打算僅將此路線用於此路線,您實際上只能在該游泳池的一個連接池中生活。

ActiveMQ製作了帶有JMSTemplate的summary of tips and tricks。值得一讀。

更新:關於有關的併發連接的數量:

簡化,連接是通過網絡連接(「插座」)與代理,即許多線程之間共享。您的每個線程仍將擁有使用共享連接並同時運行的自己(共用池)會話。如果您有多個ActiveMQ代理並希望在它們之間進行負載平衡(由於ActiveMQ是瓶頸而不是您的應用程序),所以多連接仍然可以是增強功能。

failover:(ssl://host1:61616,ssl://host2:61616) 

這也可能是,在實際應用中,性能可能會通過使用一組有限的連接,而不是一上去一些小的程度,但你可能要測試出您的特定環境。

+0

謝謝佩特。這有助於理解。你爲什麼說「實際上只用一個連接就能生活」。聽起來只有一個線程連接到activemq。那將是一個瓶頸。 jetty端點上的minThreads和maxThreads不能幫助創建從activemq池到多個代理的連接。請給出意見。 – techuser

+0

添加了更新來解釋。您應該將Session視爲主要「每個線程」對象,而不是連接。 –