2012-10-15 25 views
0

我有一個關於ActiveMQ和生產者的問題。ActiveMQ生產者創建和不活動期間

我應該爲每次發送消息都創建一個生產者嗎?或者一直使用同一個?是否通過爲每次發送創建一個製作人來影響性能?

而且連接一段時間無操作後下來,但如果它與此相關的,我不知道,任何建議?

回答

0

是的,有創造一個製片人小的性能影響,特別是如果代理位於另一臺機器上(客戶端需要跟經紀人來創建一個製片人)。

在這個答案的其餘部分我假設你使用Java/JMS與AMQ交談。

如果你有一個非常重要的程序,你當然可以「再利用」的製片人,他們創造一個「空」的目標,併發送時設定的目標。

你可以做什麼,可以很容易的使用PooledConnectionFactory哪些池連接,會話和生產者。我認爲包裝類將幫助你。

其實,你可以使用這樣的PooledConnectionFactory(僞代碼):

cf = new PooledConnectionFactory(myOriginalConnectionFactory) 
sendMessage(cf) 
sendMessage(cf) 
sendMessage(cf) 

SendMessage(connectionFactory) 
    conn = connectionFactory.CreateConnection 
    sess = conn.CreateSession 
    prod = sess.createProducer 
    msg = sess.createMessage 
    prod.send(msg) 
    prod.close 
    sess.close 
    conn.close 

這意味着你不必擔心關閉/打開的會話,連接等,這是方式的廣泛應用JmsTemplate來自Spring Framework的作品(當然,使用池化/緩存資源的效果會更好)。

也期待在this頁面性能的技巧和竅門。

+0

謝謝,這是有用的信息。 –

相關問題