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

Dejan Bosanac updated AMQ-2336:
-------------------------------

    Fix Version/s:     (was: 5.4.2)
                   5.5.0

> Redeliveried messages stops consumers from going on consuming the rest of 
> messages in the queue
> -----------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2336
>                 URL: https://issues.apache.org/jira/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
>             Fix For: 5.5.0
>
>
> 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