users@glassfish.java.net

Re: infinite message redelivery in the case of a DatabaseExcepti

From: Amy Kang <amy.kang_at_oracle.com>
Date: Thu, 14 Apr 2011 15:05:38 -0700

On 11-04-14 08:46 AM, forums_at_java.net wrote:
> My expectation was, that the check if the message was already
> redelivered is
> done by the container and in the case, that the redelivery count is
> above a
> specific threshold, the message is moved to the DMQ.

In this case, the broker redelivers the message as requested by TM
transaction rollbacks. Please file an improvement request for the above at
http://java.net/jira/browse/MQ

> Additionally why is the
> behaviour different, when a PersistenceException is thrown before the
> commit?

If a PersistenceException is thrown within onMessage(), redelivery is
handled by JMSRA for it knows either the message delivery is not part of
a transaction (not CMT) or it's at a stage before transaction
completion; whereas if commit fails in CMT, the message redelivery is
driven by TM if TM rolls back the distributed transaction that failed
to commit.

amy

>
>
> carsten
>
>
>
>
> --
>
> [Message sent by forum member 'c_krebs']
>
> View Post: http://forums.java.net/node/791533
>
>