我想創建一個通道/連接到一個隊列服務器的池,並試圖使用ObjectPool,但在使用它的網站上的example時遇到了麻煩。有沒有關於如何使用Java ObjectPool/pools的好教程或例子?
到目前爲止,我有線程可以工作,但我希望他們每個人都能從池中獲取一個通道,然後將其返回。我明白如何使用它(borrowObject/returnObjects),但不知道如何創建初始池。
這裏的通道是如何在RabbitMQ的製作:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
和我的代碼只是使用渠道做的東西。我很困惑,因爲我能找到(在其網站上)唯一的例子開始像這樣:
private ObjectPool<StringBuffer> pool;
public ReaderUtil(ObjectPool<StringBuffer> pool) {
this.pool = pool;
}
這是沒有意義的我。我意識到這是建立數據庫連接的常見原因,所以我試圖找到使用數據庫和ObjectPool的教程,但他們似乎使用特定於數據庫的DBCP(並且我似乎無法使用我的隊列服務器的邏輯)。
有關如何使用它的任何建議?或者有沒有另一種方法用於java中的池?
非常感謝。我會玩代碼。我不明白在哪裏指定頻道的數量。在你的例子中你是共享一個連接還是有一個地方我可以說我想要預先創建X連接? – Lostsoul 2012-04-28 23:50:46
池不預先創建他們的池中的對象。他們根據需求創建它們,並將其從游泳池中取出,或者如果游泳池爲空,則創建一個新的游泳池。所以通常沒有限制。但我不知道你使用的班級或班級班級的工作/他們的能力。我只是爲你翻譯了這個例子:) – zapl 2012-04-28 23:54:28
如果啓用驅逐線程並設置「minIdle」屬性,GenericObjectPool將預先創建池化對象。 http://commons.apache.org/pool/api-1.6/org/apache/commons/pool/impl/GenericObjectPool.html – dnault 2012-04-29 00:00:28