You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Mykola Paliyenko (JIRA)" <ji...@apache.org> on 2007/05/04 16:07:35 UTC

[jira] Reopened: (AMQ-1045) PooledConnectionFactory does not work with the org.springframework.jms.listener.DefaultMessageListenerContainer in the failure case

     [ https://issues.apache.org/activemq/browse/AMQ-1045?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mykola Paliyenko reopened AMQ-1045:
-----------------------------------


Similar problem
4.1.1 rev 533993
sometimes when I shut down one of ActiveMQ servers that configured in JDBC master-slave way 
DefaultMessageListenerContainer does not reconnect.
Messages are published but not consumed

Config of container
    <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="autoStartup" value="${jms.sms.start}" />
        <property name="concurrentConsumers" value="${jms.sms.concurrent.consumers}" />
        <property name="connectionFactory" ref="jmsConnectionFactory" />
        <property name="destination" ref="jmsSmsDestination" />
        <property name="messageListener" ref="smsJmsListener" />
        <property name="sessionTransacted" value="true"></property>
    </bean>
Connection factory

	<bean id="jmsConnectionFactory"
		class="org.apache.activemq.pool.PooledConnectionFactory"
		init-method="start" destroy-method="stop">
		<property name="connectionFactory">
			<bean
				class="org.apache.activemq.ActiveMQConnectionFactory">
				<property name="brokerURL"
					value="failover:(tcp://localhost:61616,tcp://localhost:61716)" />
				<property name="redeliveryPolicy">
					<bean class="org.apache.activemq.RedeliveryPolicy">
						<property name="backOffMultiplier" value="3"/>
						<property name="useExponentialBackOff" value="true"/>
						<property name="maximumRedeliveries" value="11"></property>
						<property name="initialRedeliveryDelay" value="2000"></property>
					</bean>
				</property>
			</bean>
		</property>
	</bean>


Also whenit reconeects it show such messages often

DEBUG AbstractRegion                 - Removing consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2014
DEBUG AbstractRegion                 - Adding consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2015
DEBUG AbstractRegion                 - Removing consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2015
DEBUG AbstractRegion                 - Adding consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2016
DEBUG AbstractRegion                 - Removing consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2016
DEBUG AbstractRegion                 - Adding consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2017
DEBUG AbstractRegion                 - Removing consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2017
DEBUG AbstractRegion                 - Adding consumer: ID:MPaliyenkoN2-3962-1178284368281-1:0:1:2018


After I switched several times the messages dissapeared.

Server config

<beans>

<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>

<broker brokerName="localhost" useJmx="true" xmlns="http://activemq.org/config/1.0">

<!-- Use the following to set the broker memory limit
<memoryManager>
<usageManager id="memory-manager" limit="20 MB"/>
</memoryManager>
-->

<!-- Use the following to configure how ActiveMQ is exposed in JMX
<managementContext>
<managementContext connectorPort="1099" jmxDomainName="org.apache.activemq"/>
</managementContext>
-->

<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds"/>
</persistenceAdapter>

<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616"/>
<transportConnector name="ssl" uri="ssl://localhost:61617"/>
<transportConnector name="stomp" uri="stomp://localhost:61613"/>
</transportConnectors>

<networkConnectors>
<!-- by default just auto discover the other brokers -->
<networkConnector name="default-nc" uri="multicast://default"/>
<!--
<networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)" failover="true"/>
-->
</networkConnectors>

</broker>

<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/sonoportal?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>

</beans>

please suggest

> PooledConnectionFactory does not work with the org.springframework.jms.listener.DefaultMessageListenerContainer in the failure case
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-1045
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1045
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 4.0
>            Reporter: Hiram Chirino
>         Assigned To: Hiram Chirino
>             Fix For: 4.1.1, 4.2.0
>
>
> The DefaultMessageListenerContainer has retry logic built into it. When a connection dies it tried to reconnect by getting a new connection from the ConnectionFactory. Since the PooledConenctionFactory has one Connection it, it keeps on trying to give out the Connection that died. We would like the PooledConnectionFactory to be able to "evict" the dead connection and create a new one.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.