Redeliveried messages stops consumers from going on consuming the rest of 
messages in the queue
-----------------------------------------------------------------------------------------------

                 Key: AMQ-2336
                 URL: https://issues.apache.org/activemq/browse/AMQ-2336
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.2.0, 5.3.0
         Environment: Windows XP, Java  1.5.0_11
Spring 2.5.6 DefaultMessageListenerContainer
            Reporter: Diego Rodriguez


Here are the steps to reproduce de problem:

   - redeliveryPolicy configured in ActiveMQConnectionFactory as 
initialRedeliveryDelay 10000, maximumRedeliveries 6, useExponentialBackOff 
true, backOffMultiplier 3. With these settings, messages, in case of error, 
stays in the queue several minutes.
   - DefaultMessageListenerContainer with concurrentConsumers, 
maxConcurrentConsumers set to 1, sessionTransacted=true, and cacheLevel 
CACHE_CONSUMER
   - We introduce a "bad" message in a queue (configured to cause a 
RuntimeException in the MDP associated with the queue). The message waits in 
the queue to be redelivered again (seen in jconsole)
   - We introduce a "good" message in a queue. The MDP associated with the 
queue should process this message inmediatly with no exception, but instead, 
the message is not been processed until last redelivery of the "bad" message, 
and it happens several minutes later. When this happens, message is processed 
Ok.

   This problem can cause queues to grow unnecessarily if few messages are 
waiting to be redelivered. What I expected to happen is messages being 
processed as they arrive if  there is a consumer available, but it seems 
consumers with a rollback in a transaction are not available until the 
rollbacked  message is processed again and finally sent to DLQ.

   In addition, in Activemq version 5.2.0, when I remove consumers while 
waiting for next redelivery of the message, broker throws this exception (this 
not happens with 5.3-SNAPSHOT):

  30 jul 2009 14:17:45,140 ERROR [ActiveMQ Transport: tcp:///127.0.0.1:3656] 
org.apache.activemq.broker.TransportConnection.Service  - sync error occurred:
javax.jms.JMSException: Transaction 
'TX:ID:mymachine-4579-1248953104078-0:5207:52' has not been started.
javax.jms.JMSException: Transaction 
'TX:ID:mymachine-4579-1248953104078-0:5207:52' has not been started.
       at 
org.apache.activemq.broker.TransactionBroker.getTransaction(TransactionBroker.java:270)
       at 
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:190)
       at 
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
       at 
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
       at 
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
       at 
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)
       at 
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:456)
       at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)
       at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:305)
       at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179)
       at 
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
       at 
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
       at 
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
       at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
       at 
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
       at 
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
       at java.lang.Thread.run(Thread.java:595

   

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

Reply via email to