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

Gary Tully reassigned AMQ-2089:
-------------------------------

    Assignee: Gary Tully

> Transacted Messages Not Committed
> ---------------------------------
>
>                 Key: AMQ-2089
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2089
>             Project: ActiveMQ
>          Issue Type: Test
>          Components: Broker
>    Affects Versions: 5.2.0
>         Environment: linux centOS 64 bit, JRE 1.6.0_11-b03
>            Reporter: Frank E. Banks
>            Assignee: Gary Tully
>         Attachments: AMQWorkerTest.java, TestCase.java
>
>
> The basic architecture of the consumer is a java daemon that spawns a 
> configurable number of single threaded consumers that implement 
> MessageListener- each opens its own connection and transacted session.  In 
> the consumer onMessage() method session.commit() is being called upon 
> successful processing of the message- and I've verified that it is actually 
> executed.  The problem is that despite the message being successfully 
> processed and session.commit() executed the messages remain as pending in the 
> queue.  If the consumer daemon is stopped and re-started these messages are 
> consumed again (definitely not good).  Note that session.rollback() was NOT 
> called in this scenario, all the messages were processed successfully.  Also 
> note that these are persistent messages and we are using the default AMQ 
> message store.
> - The problem *only* occurs when the number of consumer threads is greater 
> than 1. 
> - The problem occurs whether or not a correlation ID is used on the messages. 
>  I wasn't sure if this mattered or not, but it doesn't.
> Fortunately, as a result of working with this test case I discovered a work 
> around to the problem, which is to not only call session.commit() on 
> successful message processing but to then call message.acknowledge() as well. 
>  This works like a charm, but it was my understanding that calling 
> message.acknowledge() was not necessary when using transacted sessions.

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