activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Bain <tb...@alumni.duke.edu>
Subject Re: Message not redirected to DLQ when exception thrown by MDB
Date Sat, 12 Mar 2016 15:43:11 GMT
I've never used MDBs, but I would expect DUPS_OK_ACKNOWLEDGE mode to use
CLIENT_ACKNOWLEDGE mode under the covers.  You could test that by setting a
breakpoint in your MDB's body (before whatever throws the exception) and
checking that the dequeue count doesn't increase until you resume.

You could also grab the source of the message adapter and attach it to your
debugger, and you can step out (up the stack) to see if we're eating the
exception.  If we're eating it, file a bug in JIRA; if not, then maybe it's
something in Wildfly.

Tim
One more add on:

Also the EJB 3.1 specification is a bit unclear how to handle message
acknowledge with bean managed transactions:

/*5.4.15 Message Acknowledgment for JMS Message-Driven Beans*
JMS message-driven beans should not attempt to use the JMS API for message
acknowledgment. Message acknowledgment is automatically handled by the
container. If the message-driven bean uses container-managed transaction
demarcation, message acknowledgment is handled automatically as a part of
the transaction commit. If bean-managed transaction demarcation is used, the
message receipt cannot be part of the bean-managed transaction, and, in this
case, the receipt is acknowledged by the container. If bean-managed
transaction demarcation is used, the Bean Provider can indicate whether JMS
AUTO_ACKNOWLEDGE semantics or DUPS_OK_ACKNOWLEDGE semantics should apply by
using the
activationConfig element of the MessageDriven annotation or by using the
activation-config-property deployment descriptor element. The property name
used to specify the acknowledgment mode is acknowledgeMode. If the
acknowledgeMode property is not specified, JMS AUTO_ACKNOWLEDGE semantics
are assumed. The value of the acknowledgeMode property must be either
Auto-acknowledge or Dups-ok-acknowledge for a JMS message-driven bean./

The specification seems to be differently interpreted. As I said already,
WebLogic handes it so, that when an exception occurs in the MDB messages are
resent to the bean and at last redirected to the DLQ. It doesn't matter if I
use ActiveMQ or the WebLogic internal JMS system. Interestingly, the message
is not redelivered or redirected, when I roll-back the user transaction.

I wonder if this has something to do with the ActiveMQ resource adapter,
which is involved with WildFly but not with WebLogic. Or it is a WildFly
issue.

In any case IMHO acknowledging a message, when processing fails is not very
useful.

Thomas





--
View this message in context:
http://activemq.2283324.n4.nabble.com/Message-not-redirected-to-DLQ-when-exception-thrown-by-MDB-tp4709187p4709206.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message