Hi, in the JMS spec the following is specified: "It is possible for a listener to throw a RuntimeException; however, this is considered a client programming error. Well-behaved listeners should catch such exceptions and attempt to divert messages causing them to some form of application-specific ‘unprocessable message’ destination. The result of a listener throwing a RuntimeException depends on the session’s acknowledgment mode. • AUTO_ACKNOWLEDGE or DUPS_OK_ACKNOWLEDGE - the message will be immediately redelivered. The number of times a JMS provider will redeliver the same message before giving up is provider-dependent. The JMSRedelivered message header field will be set for a message redelivered under these circumstances"
But the messages are only redelivered after restarting the broker. I also habe problems with this behaviour, becaue my colleagues are throwing RuntimExceptions into my onMessage method :-( I expected the message to be redelivered asap. What is the state about this issue? Has a jira been raised? best regards, Matthias rajdavies wrote: > > > 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! > > -- View this message in context: http://www.nabble.com/AMQ-5.1---Re-queued-msg-are-redelivered-again-after-restart-tp15752828s2354p16254960.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.