キューサーバーへのチャネル/接続のプールを作成しようとしましたが、ObjectPoolを使用しようとしましたが、サイト上でexampleから問題を使用しています。Java ObjectPool/poolの使い方に関する良いチュートリアルや例はありますか?
これまではスレッドが動作していましたが、各スレッドがプールからチャネルを取得して戻すようにしています。私はそれを使用する方法(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のプールに使用される別のアプローチがありますか?
大変ありがとうございます。私はコードで遊ぶだろう。私はどこのチャンネルを指定するのか分からない。あなたの例では、1つの接続を共有しているか、X接続を事前に作成したいと言うことができる場所がありますか? – Lostsoul
プールはプールされたオブジェクトを事前作成しません。彼らは必要に応じてそれらを作成し、プールからそれらを取るか、またはプールが空の場合は新しいものを作成します。したがって、通常は制限はありません。しかし、あなたが使っているクラスやプールクラスがどのように働いているのか/彼らができることは分かりません。私はちょうどあなたのための例を翻訳しました:) – zapl
GenericObjectPoolは、退去スレッドを有効にして "minIdle"プロパティを設定すると、プールされたオブジェクトをあらかじめ作成します。 http://commons.apache.org/pool/api-1.6/org/apache/commons/pool/impl/GenericObjectPool.html – dnault