我想创建一个通道/连接到一个队列服务器的池,并试图使用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