activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruce Snyder (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AMQ-2336) Redeliveried messages stops consumers from going on consuming the rest of messages in the queue
Date Sat, 18 Sep 2010 16:44:04 GMT

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

Bruce Snyder updated AMQ-2336:
------------------------------

    Fix Version/s: 5.5.0
                       (was: 5.4.1)

> 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
>             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.


Mime
View raw message