2012-06-21 83 views
2

請問您能幫我解決一個簡單的問題。 我需要使用PooledConnectionFactory而不使用Spring,JMSTemplate。 ActiveMQ說,這個班級正在集中連接,製作者,會話,以及讓我感到困惑的東西,我不知道如何讓它們脫離實例。我正在等待一些takeConnection(),然後是realeaseConnection()和takeProducer()並實現了producer()。 pooledConnectionFactory.start();後應該做什麼?通常,我會做連接c = pooledConnectionFactory.createConnection ...希望,我解釋了我的問題。以及生產者和會話如何彙集,如果它們是從Connection直接創建的。ActiveMQ PooledConnectionFactory不帶彈簧

connectionFactory = new ActiveMQConnectionFactory(
      userId, 
      passWord, 
      brokerURL); 
    log.info("Queueing service init: BrokerURL: " + brokerURL + " UserId: " + userId + " Paasword: " + passWord); 

    pooledConnectionFactory = new PooledConnectionFactory(connectionFactory); 

    pooledConnectionFactory.setIdleTimeout(5000); 
    pooledConnectionFactory.setMaxConnections(10); 
    pooledConnectionFactory.setMaximumActive(5000); 
    pooledConnectionFactory.start(); 

回答

3

那麼,彙集連接工廠就像任何其他jms連接工廠,當涉及到使用它。

只要致電:

pooledConnectionFactory.createConnection(); //如你所願

連接工廠不會真的建立連接,而是給你一個連接池。然後,connection.close();將再次釋放到池中。但所有這一切都在引擎蓋下,只要按照習慣使用它就可以了,這樣做會很好。會議和生產者也是如此,但不是消費者。

+0

哦,謝謝,我今天會試試。我想,我做了錯誤的測試。我創建了1個連接池,然後創建了2個連接,並將它們進行比較,它們不相等,但我沒有調用.close()希望這是我需要的 – user1255246

+0

我試圖像你說的那樣實現,所以我有pooledConnectionFactory ,我用createConnection()創建了連接;在連接實例上,我稱之爲啓動和關閉。它可以工作,但似乎比使用一個連接慢。在http:// localhost:8161/admin/topics.jsp的activeMQ控制檯中,我可以看到助手主題的連接增加得非常快(在這裏我有一個關於10個主題消息的連接,這裏我有一千個),所以似乎每次都會創建連接,並且不會返回到池中,我的所有內存都已關閉,並且計算機開始工作不正常。 – user1255246

+0

嗯,我還沒有玩過很多這些東西來肯定知道。有一件事,如果你使用的是連接工廠,那麼這個池就是生產者,會話和連接。您不需要調用.start(),因爲如果您啓動了偵聽器或使用者,它就開始接收消息。爲此,請使用普通的CF. –