|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.activemq.pool.PooledConnectionFactory
public class PooledConnectionFactory
A JMS provider which pools Connection, Session and MessageProducer instances so it can be used with tools like Camel and Spring's JmsTemplate and MessagListenerContainer. Connections, sessions and producers are returned to a pool after use so that they can be reused later without having to undergo the cost of creating them again. b>NOTE: while this implementation does allow the creation of a collection of active consumers, it does not 'pool' consumers. Pooling makes sense for connections, sessions and producers, which are expensive to create and can remain idle a minimal cost. Consumers, on the other hand, are usually just created at startup and left active, handling incoming messages as they come. When a consumer is complete, it is best to close it rather than return it to a pool for later reuse: this is because, even if a consumer is idle, ActiveMQ will keep delivering messages to the consumer's prefetch buffer, where they'll get held until the consumer is active again. If you are creating a collection of consumers (for example, for multi-threaded message consumption), you might want to consider using a lower prefetch value for each consumer (e.g. 10 or 20), to ensure that all messages don't end up going to just one of the consumers. See this FAQ entry for more detail: http://activemq.apache.org/i-do-not-receive-messages-in-my-second-consumer.html
Constructor Summary | |
---|---|
PooledConnectionFactory()
|
|
PooledConnectionFactory(ActiveMQConnectionFactory connectionFactory)
|
|
PooledConnectionFactory(java.lang.String brokerURL)
|
Method Summary | |
---|---|
javax.jms.Connection |
createConnection()
|
protected ActiveMQConnection |
createConnection(ConnectionKey key)
|
javax.jms.Connection |
createConnection(java.lang.String userName,
java.lang.String password)
|
protected ConnectionPool |
createConnectionPool(ActiveMQConnection connection)
|
protected org.apache.commons.pool.ObjectPoolFactory |
createPoolFactory()
Creates an ObjectPoolFactory. |
javax.jms.ConnectionFactory |
getConnectionFactory()
|
long |
getExpiryTimeout()
|
int |
getIdleTimeout()
|
int |
getMaxConnections()
|
int |
getMaximumActive()
|
org.apache.commons.pool.ObjectPoolFactory |
getPoolFactory()
|
void |
setBlockIfSessionPoolIsFull(boolean block)
Controls the behavior of the internal session pool. |
void |
setConnectionFactory(javax.jms.ConnectionFactory connectionFactory)
|
void |
setExpiryTimeout(long expiryTimeout)
allow connections to expire, irrespective of load or idle time. |
void |
setIdleTimeout(int idleTimeout)
|
void |
setMaxConnections(int maxConnections)
|
void |
setMaximumActive(int maximumActive)
Sets the maximum number of active sessions per connection |
void |
setPoolFactory(org.apache.commons.pool.ObjectPoolFactory poolFactory)
Sets the object pool factory used to create individual session pools for each connection |
void |
start()
|
void |
stop()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public PooledConnectionFactory()
public PooledConnectionFactory(java.lang.String brokerURL)
public PooledConnectionFactory(ActiveMQConnectionFactory connectionFactory)
Method Detail |
---|
public javax.jms.ConnectionFactory getConnectionFactory()
public void setConnectionFactory(javax.jms.ConnectionFactory connectionFactory)
public javax.jms.Connection createConnection() throws javax.jms.JMSException
createConnection
in interface javax.jms.ConnectionFactory
javax.jms.JMSException
public javax.jms.Connection createConnection(java.lang.String userName, java.lang.String password) throws javax.jms.JMSException
createConnection
in interface javax.jms.ConnectionFactory
javax.jms.JMSException
protected ConnectionPool createConnectionPool(ActiveMQConnection connection)
protected ActiveMQConnection createConnection(ConnectionKey key) throws javax.jms.JMSException
javax.jms.JMSException
public void start()
start
in interface Service
org.apache.activemq.service.Service#start()
public void stop()
stop
in interface Service
public org.apache.commons.pool.ObjectPoolFactory getPoolFactory()
public void setPoolFactory(org.apache.commons.pool.ObjectPoolFactory poolFactory)
public int getMaximumActive()
public void setMaximumActive(int maximumActive)
public void setBlockIfSessionPoolIsFull(boolean block)
block
- - if true, the call to getSession() blocks if the pool is full
until a session object is available. defaults to true.public int getMaxConnections()
public void setMaxConnections(int maxConnections)
maxConnections
- the maxConnections to setprotected org.apache.commons.pool.ObjectPoolFactory createPoolFactory()
public int getIdleTimeout()
public void setIdleTimeout(int idleTimeout)
public void setExpiryTimeout(long expiryTimeout)
expiryTimeout
- non zero in millisecondspublic long getExpiryTimeout()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |