Я пытаюсь создать пул каналов/подключений к серверу очереди и пытался использовать ObjectPool, но у меня проблемы с его использованием из example на их сайте.Есть ли хорошие учебники или примеры использования Java ObjectPool/pool?
До сих пор у меня есть потоки, которые работают, но я хочу, чтобы каждый из них захватил канал из пула, а затем вернул его. Я понимаю, как его использовать (loanObject/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?
wow Большое спасибо. Я буду играть с кодом. Я не понимаю, где указать количество каналов. В вашем примере вы делитесь одним соединением или там, где я могу сказать, что хочу предварительно создать X-соединения? – Lostsoul
Бассейны не создают своего объединенного объекта. Они создают их по требованию и берут их либо из пула, либо создают новый, если пул пуст. Так что обычно нет предела. Но я не знаю, как работают классы или класс пула/на что они способны. Я просто перевел пример для вас :) – zapl
GenericObjectPool будет предварительно создавать пул-объекты, если вы включите поток выселения и установите свойство minIdle. http://commons.apache.org/pool/api-1.6/org/apache/commons/pool/impl/GenericObjectPool.html – dnault