On 29 Feb 2008, at 06:18, DinDon wrote:


Hello guys,

I am new to JMS and ActiveMQ(apache- activemq-5.1-20080220.151243-27), and I have been testing ActiveMQ with SpringJMS and Jencks for a week, and googled
with no luck for the following issues.

- Re-queued messages only being redelivered after restarting AMQ
- In my MessageListener.onMessage(Message message) method, I throw a
RuntimeException() for testing redelivery.

Here is the Spring Config which I followed some tutorials:

        <bean id="jmsTransactionManager"
                class="org.jencks.factory.TransactionManagerFactoryBean" />

        <bean id="connectionManager"
                class="org.jencks.factory.ConnectionManagerFactoryBean">
                <property name="transactionManager" ref="jmsTransactionManager" 
/>
        </bean>

        <bean id="jmsResourceAdapter"
                class="org.apache.activemq.ra.ActiveMQResourceAdapter">
                <property name="serverUrl" value="${pms.mq.serverUrl}" />
                <property name="userName" value="${pms.mq.userName}" />
                <property name="password" value="${pms.mq.password}" />
                <property name="initialRedeliveryDelay" value="5" />
                <property name="maximumRedeliveries" value="2" />
        </bean>

        <bean id="jmsManagedConnectionFactory"
                class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory">
                <property name="resourceAdapter" ref="jmsResourceAdapter" />
                <property name="initialRedeliveryDelay" value="10" />
                <property name="maximumRedeliveries" value="2" />
        </bean>

        <bean id="jmsConnectionFactory"
                class="org.jencks.factory.ConnectionFactoryFactoryBean">
                <property name="managedConnectionFactory"
                        ref="jmsManagedConnectionFactory" />
                <property name="connectionManager" ref="connectionManager" />
        </bean>

        <bean id="jmsTemplate"
                class="org.springframework.jms.core.JmsTemplate">
                <property name="connectionFactory">
                        <ref bean="jmsConnectionFactory" />
                </property>
        </bean>

        <bean id="jencks" class="org.jencks.JCAContainer"
                depends-on="jmsConnectionFactory">
                <property name="transactionManager" ref="jmsTransactionManager" 
/>
                <property name="threadPoolSize" value="25" />
                <property name="resourceAdapter" ref="jmsResourceAdapter" />
        </bean>

        <bean id="mailingQueueMessageListener"
                class="com.ifshk.pms.jms.MailingQueueMessageListener" />

        <bean id="inputQueueMessageListenerContainer"
class ="org.springframework.jms.listener.DefaultMessageListenerContainer"
                lazy-init="false">
                <property name="connectionFactory" ref="jmsConnectionFactory" />
                <property name="destinationName" value="${mailing.queue.name}" 
/>
                <property name="messageListener"
                        ref="mailingQueueMessageListener" />
                <property name="transactionManager" ref="jmsTransactionManager" 
/>
                <property name="sessionTransacted" value="true" />
        </bean>

        <!--
                <bean id="inboundConnectorA" class="org.jencks.JCAConnector">
                <property name="jcaContainer" ref="jencks" />
                <property name="activationSpec">
                <bean
                class="org.apache.activemq.ra.ActiveMQActivationSpec">
                <property name="destination" value="${mailing.queue.name}" />
                <property name="destinationType"
                value="javax.jms.Queue" />
                </bean>
                </property>
                <property name="ref" value="mailingQueueMessageListener" />
                </bean>
        -->

Initially, I used inboundConnectorA for receiving Message, but it seems jencks doesn't rollback a message automatically when an exception occurs. So I switched to DefaultMessageListenerContainer, and rollback does work but the re-queued messages only being redelivered again after I restart AMQ, and
those messages never be marked as DEAD and sent to a dead queue.

Please advice.

Thanks a lot & regards,
--
View this message in context: 
http://www.nabble.com/AMQ-5.1---Re-queued-msg-are-redelivered-again-after-restart-tp15752828s2354p15752828.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Odd - best raise a jira!

Reply via email to