A pool size of 10 looks fairly small - have you tried using a larger pool size?
On 8/17/06, Eugene Prokopiev <[EMAIL PROTECTED]> wrote:
Hi,
Is anybody use Jencks + ActiveMQ in production? After some time runnig I
got:
2006-08-17 14:32:24,027 ERROR ActiveMQSession - error
dispatching message:
org.springframework.jms.UncategorizedJmsException: Uncategorized
exception occured during JMS processing; nested exception is
javax.jms.JMSExce
ption: No ManagedConnections available within configured blocking
timeout ( 60000 [ms] )
Caused by:
javax.jms.JMSException: No ManagedConnections available within
configured blocking timeout ( 60000 [ms] )
at
org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:99)
at
org.apache.activemq.ra.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:65)
at
org.springframework.jms.core.JmsTemplate.createConnection(JmsTemplate.java:792)
at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:420)
at
org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:486)
at
org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:565)
at manager.broker.MessageRouter.onMessage(MessageRouter.java:53)
at
manager.broker.MessageRouter$$FastClassByCGLIB$$94a8605c.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:709)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:647)
at
manager.broker.MessageRouter$$EnhancerByCGLIB$$42ff1b4.onMessage(<generated>)
at org.jencks.XAEndpoint.onMessage(XAEndpoint.java:126)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:120)
at
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:60)
at
org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:690)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:164)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:595)
My configuration is:
<beans>
<!-- Geronimo Transaction Manager -->
<bean id="transactionContextManager"
class="org.jencks.factory.TransactionContextManagerFactoryBean"/>
<bean id="geronimo"
class="org.jencks.factory.GeronimoTransactionManagerFactoryBean"/>
<bean id="geronimoTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="geronimo" />
</bean>
<!-- PostgreSQL JDBC DataSource configuration -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url"
value="jdbc:postgresql://ats-manager/activemq"/>
<property name="username" value="activemq"/>
</bean>
<!-- ActiveMQ Broker configuration -->
<bean id="broker" class="org.apache.activemq.broker.BrokerService"
init-method="start" destroy-method="stop">
<property name="persistent" value="true"/>
<property name="transportConnectorURIs">
<list>
<value>tcp://localhost:5000</value>
</list>
</property>
<property name="persistenceAdapter">
<bean
class="org.apache.activemq.store.jdbc.JDBCPersistenceAdapter">
<property name="dataSource" ref="dataSource"/>
</bean>
</property>
</bean>
<!-- Jencks Connection Manager configuration -->
<bean id="connectionManager"
class="org.jencks.factory.ConnectionManagerFactoryBean">
<property name="transactionSupport">
<bean
class="org.jencks.factory.XATransactionFactoryBean">
<property name="useTransactionCaching"
value="true"/>
<property name="useThreadCaching" value="true"/>
</bean>
</property>
<property name="poolingSupport">
<bean class="org.jencks.factory.SinglePoolFactoryBean">
<property name="maxSize" value="10"/>
<property name="minSize" value="1"/>
<property name="blockingTimeoutMilliseconds"
value="60000"/>
<property name="idleTimeoutMinutes" value="60"/>
<property name="matchOne" value="true"/>
<property name="matchAll" value="true"/>
<property name="selectOneAssumeMatch"
value="true"/>
</bean>
</property>
</bean>
<!-- JCA ActiveMQ Connection configuration -->
<bean id="jmsResourceAdapter"
class="org.apache.activemq.ra.ActiveMQResourceAdapter" depends-on="broker">
<property name="serverUrl" value="tcp://localhost:5000"/>
</bean>
<bean id="jmsManagedConnectionFactory"
class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory">
<property name="resourceAdapter" ref="jmsResourceAdapter"/>
</bean>
<bean id="jmsConnectionFactory"
class="org.springframework.jca.support.LocalConnectionFactoryBean">
<property name="managedConnectionFactory"
ref="jmsManagedConnectionFactory"/>
<property name="connectionManager" ref="connectionManager"/>
</bean>
<!-- Jencks JCA Container configuration -->
<bean id="jencksJCAContainer" class="org.jencks.JCAContainer">
<property name="bootstrapContext">
<bean
class="org.jencks.factory.BootstrapContextFactoryBean">
<property name="threadPoolSize" value="5"/>
</bean>
</property>
<property name="resourceAdapter" ref="jmsResourceAdapter"/>
</bean>
<bean id="inboundConnector" class="org.jencks.JCAConnector">
<property name="jcaContainer" ref="jencksJCAContainer" />
<property name="activationSpec">
<bean
class="org.apache.activemq.ra.ActiveMQActivationSpec">
<property name="destination"
value="messages.input"/>
<property name="destinationType"
value="javax.jms.Queue"/>
</bean>
</property>
<property name="transactionManager" ref="geronimo"/>
<property name="ref" value="messageRouter"/>
</bean>
<bean id="messageRouter" class="manager.broker.MessageRouterSimple">
<property name="jmsTemplate">
<bean class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory"
ref="jmsConnectionFactory"/>
</bean>
</property>
</bean>
</beans>
manager.broker.MessageRouterSimple.java is:
public class MessageRouterSimple implements MessageListener {
private Log log = LogFactory.getLog(getClass());
private JmsTemplate jmsTemplate;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public void onMessage(Message msg) {
try {
long begin = System.currentTimeMillis();
log.debug("currentTimeMillis : "+begin);
final manager.messages.model.Message message =
(manager.messages.model.Message)((ObjectMessage)msg).getObject();
jmsTemplate.convertAndSend("messages.output.consumer1",
message);
long end = System.currentTimeMillis();
log.debug("route time : "+(end-begin));
log.debug("currentTimeMillis : "+end);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
Is my configuration wrong or anybody has a same problems?
I tried to use Spring 2.0 message driven POJO without JTA and all works
fine ...
--
Thanks,
Eugene Prokoiev
--
James
-------
http://radio.weblogs.com/0112098/