[ 
https://issues.apache.org/jira/browse/AMQ-6603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15888131#comment-15888131
 ] 

Christopher L. Shannon commented on AMQ-6603:
---------------------------------------------

Right, if you really want to share connections across multiple DMLCs then you'd 
still need a pooled factory.  I wouldn't say using failover + pooled factory + 
DMLC is necessarily evil...just that there's a lot going on there that could 
cause problems and it would simply things if you didn't use a pooled connection 
factory (such as if you were only a small number of DMLCs) unless you really 
need it.

The use case should still work however and there is probably some improvement 
here that needs to be done in order to properly handle the failover case in 
this set up so that an excessive number of consumers don't get created.

> 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: pooled-amq-client.zip, 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)

Reply via email to