[
https://issues.apache.org/jira/browse/AMQ-6603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15878255#comment-15878255
]
Christopher L. Shannon commented on AMQ-6603:
---------------------------------------------
I think the issue is with your configuration. It usually doesn't make sense to
use a connection pool with a DefaultMessageLIstenerContainer because you want
to let the DefaultMessageListenerContainer do its own caching. If you just
pass a normal connection factory to the DefaultMessageListenerContainer then it
should just create 1 connection and 10 consumers.
>From the Spring docs:
"Note: Don't use Spring's CachingConnectionFactory in combination with dynamic
scaling. Ideally, don't use it with a message listener container at all, since
it is generally preferable to let the listener container itself handle
appropriate caching within its lifecycle. Also, stopping and restarting a
listener container will only work with an independent, locally cached
Connection - not with an externally cached one."
> Excessive number of consumers when used with PooledConnectionFactory and
> Failover transport
> -------------------------------------------------------------------------------------------
>
> Key: AMQ-6603
> URL: https://issues.apache.org/jira/browse/AMQ-6603
> Project: ActiveMQ
> Issue Type: Bug
> Components: JMS client
> Affects Versions: 5.14.3
> Reporter: Tadayoshi Sato
> Attachments: spring-amq-client.zip
>
>
> When {{PooledConnectionFactory}} is used with Failover transport,
> insufficient access control settings on the broker result in an excessive
> number of consumer objects on the broker once the access control settings are
> properly set.
> Here is an example Spring XML configuration:
> {code:xml}
> <beans ...>
> <bean id="jmsConnectionFactory"
> class="org.apache.activemq.ActiveMQConnectionFactory">
> <property name="brokerURL" value="failover:(tcp://localhost:61616)" />
> <property name="userName" value="test" />
> <property name="password" value="test" />
> </bean>
> <bean id="pooledConnectionFactory"
> class="org.apache.activemq.pool.PooledConnectionFactory">
> <property name="connectionFactory" ref="jmsConnectionFactory" />
> <property name="maxConnections" value="10" />
> </bean>
> <bean id="jmsContainer"
> class="org.springframework.jms.listener.DefaultMessageListenerContainer">
> <property name="connectionFactory" ref="pooledConnectionFactory" />
> <property name="destinationName" value="TEST" />
> <property name="messageListener" ref="messageListener" />
> <property name="concurrentConsumers" value="10" />
> </bean>
> <bean id="messageListener" class="com.redhat.issues.amq.SpringJmsConsumer"
> />
> </beans>
> {code}
> In this configuration we expect only one connection and 10 consumers for
> {{TEST}} queue, but after following the reproducer steps we see around 10
> connections and 100 consumers for the queue on hawtio. In the above
> configuration Spring DMLC is used but we can reproduce the issue without
> Spring.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)