I figured this out but it was in no way obvious... I had to add this to the DMLC:
<property name="cacheLevelName" value="CACHE_CONSUMER"/> Hope this helps someone else avoid wasting a whole day.. Charles chudak wrote: > > I'm having a problem with message redelivery. > > I'm using: > > ActiveMQ 5.3.0 > Spring 2.5.6 > Spring Integration 1.0 > Atomikos 3.5.9 > > If I send a 'broken' message to my queue, the transaction rolls back > correctly but it NEVER gets redelivered even if I restart both the client > (application) and the broker. Subsequently valid messages get delivered > just fine but it seems that this broken message never gets redelivered. > The message shows as 'redelivered' in the activemq web admin even though > my logs only show it having been delivered one time and being rolled back. > > I'm using the default activemq broker configuration (out of the box) with > the following spring configuration: > > <bean id="queueConnectionFactoryBean" > class="org.springframework.jms.connection.SingleConnectionFactory" > destroy-method="destroy"> > <constructor-arg> > <bean class="com.atomikos.jms.QueueConnectionFactoryBean" > init-method="init"> > <property name="xaQueueConnectionFactory" > ref="queueConnectionFactoryXa"/> > </bean> > </constructor-arg> > <property name="reconnectOnException" value="true"/> > </bean> > > <bean id="queueConnectionFactoryXa" > class="org.apache.activemq.ActiveMQXAConnectionFactory"> > <property name="brokerURL" value="${activemq.url}"/> > <!-- Set prefetch to 1 to prevent message rollback from preventing > message redelivery. > See http://activemq.apache.org/what-is-the-prefetch-limit-for.html > for more information > --> > <property name="prefetchPolicy"> > <bean class="org.apache.activemq.ActiveMQPrefetchPolicy"> > <property name="queuePrefetch" value="0"/> > </bean> > </property> > <property name="redeliveryPolicy"> > <bean class="org.apache.activemq.RedeliveryPolicy"> > <property name="initialRedeliveryDelay" value="1000"/> > <property name="maximumRedeliveries" value="10"/> > <property name="useExponentialBackOff" value="false"/> > </bean> > </property> > </bean> > > <bean id="gatewayMessageListenerContainer" > class="org.springframework.jms.listener.DefaultMessageListenerContainer" > depends-on="transactionManager"> > <property name="connectionFactory" > ref="queueConnectionFactoryBean"/> > <property name="transactionManager" ref="transactionManager"/> > <property name="destination" ref="gatewayMessageDestination"/> > <property name="sessionTransacted" value="true"/> > <property name="maxConcurrentConsumers" value="5"/> > <property name="concurrentConsumers" value="1"/> > <property name="receiveTimeout" value="5000"/> > <property name="recoveryInterval" value="60000"/> > <property name="autoStartup" value="true"/> > </bean> > > <!-- Inbound Gateway Channel adapter --> > <jms:message-driven-channel-adapter id="gatewayMessageAdapter" > channel="gatewayMessageChannel" > > container="gatewayMessageListenerContainer"/> > > I see the message rollback in the application logs: > > 2009-12-14 11:41:11,236 DEBUG > [org.springframework.jms.listener.DefaultMessageListenerContainer][AbstractPollingMessageListenerContainer.java:328] > Rolling back transaction because of listener exception thrown: > org.springframework.integration.message.MessageDeliveryException: failed > to send Message to request channel > 2009-12-14 11:41:11,237 WARN > [org.springframework.jms.listener.DefaultMessageListenerContainer][AbstractMessageListenerContainer.java:646] > Execution of JMS message listener failed > org.springframework.integration.message.MessageDeliveryException: failed > to send Message to request channel > at > org.springframework.integration.jms.ChannelPublishingJmsMessageListener.onMessage(ChannelPublishingJmsMessageListener.java:205) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:518) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:479) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451) > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323) > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:241) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876) > at java.lang.Thread.run(Thread.java:619) > 2009-12-14 11:41:11,238 DEBUG > [org.springframework.transaction.jta.JtaTransactionManager][AbstractPlatformTransactionManager.java:682] > Transactional code has requested rollback > 2009-12-14 11:41:11,238 DEBUG > [org.springframework.transaction.jta.JtaTransactionManager][AbstractPlatformTransactionManager.java:821] > Initiating transaction rollback > 2009-12-14 11:41:11,240 DEBUG > [org.apache.activemq.TransactionContext][TransactionContext.java:416] > Rollback: das_eai_web_tm0009600001das_eai_web_tm96 > > > And in the ActiveMQ log: > > 2009-12-14 11:41:11,241 | DEBUG | XA Transaction rollback: > XID:1096044365:6461735f6561695f7765625f746d30303039363030303031:6461735f6561695f7765625f746d3936 > | org.apache.activemq.transaction.XATransaction | ActiveMQ Transport: > tcp:///127.0.0.1:46357 > > One odd thing I notice is that the InFlight value is negative...and > decrements by 1 everytime one of these bogus messages rolls back. > > Anyone have any ideas what is wrong with my configuration? Why won't these > rolled back messages redeliver? > > > -- View this message in context: http://old.nabble.com/Rolled-back-messages-never-get-redelivered-tp26779979p26780000.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.