Hi,

Related to 
http://activemq.2283324.n4.nabble.com/Dead-Letter-Queue-td2356685.html this
post  I started looking into the differences between java and .net versions
of the message consumer and I think there is an issue in the NMS version.

In the Java version, if an exception is thrown in the onMessage call a
rollback will be issued. 

    } catch (RuntimeException e) {
        LOG.error(getConsumerId() + " Exception while processing message: " +
md.getMessage().getMessageId(), e);
        if (isAutoAcknowledgeBatch() || isAutoAcknowledgeEach() ||
session.isIndividualAcknowledge()) {
            // schedual redelivery and possible dlq processing
            md.setRollbackCause(e);
            rollback();
        } else {
            // Transacted or Client ack: Deliver the
            // next message.
            afterMessageIsConsumed(md, false);
        }
    }



But in the NMS version, for Auto Ack and Individual, a rollback is not
issued. So it never honors the MaximumRedeliveries value and no message will
get to the DLQ.

catch(Exception e)
{
        if(IsAutoAcknowledgeBatch || IsAutoAcknowledgeEach ||
IsIndividualAcknowledge)
        {
                // Redeliver the message
        }
        else
        {
                // Transacted or Client ack: Deliver the next message.
                this.AfterMessageIsConsumed(dispatch, false);
        }

        Tracer.Error(this.info.ConsumerId + " Exception while processing 
message: "
+ e);

        // If aborted we stop the abort here and let normal processing resume.
        // This allows the session to shutdown normally and ack all messages
        // that have outstanding acks in this consumer.
        if( (Thread.CurrentThread.ThreadState & ThreadState.AbortRequested) ==
ThreadState.AbortRequested)
        {
                Thread.ResetAbort();
        }
}


--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Apache-NMS-ActiveMQ-MessageConsumer-bug-tp3566206p3566206.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to