Pending Messages in ActiveMQ

214 views Asked by At

I have deployed my Java-MDB based application using ActiveMQ as messaging service . I could see that a few messages have been in pending status for quite some time on some queues. I have read that this happens when ActiveMQ delivers the message and consumer consumes the message but doesn't send the ack back. But I could not see any related loggers on the consumer/application side which proves that the message is consumed.

Could anyone please help me understand the reason of message being stuck in pending state.

Edit - Adding the details:

We are using Auto-acknowledge as acknowledgeMode and below is the onMessage method used on consumer side.

public void onMessage(Message message) {
    try {
        // Clear all ThreadLocal in SQLQueryHelper.
        SQLQueryHelper.clearCache();
        
        String messageOut = processMessage(message);

        // if there is a reply, send it out
        if (messageOut != null) {
            logger.warn(LoggerKeys.LOG_1_ARGS,
                new String[] {"Reply from MDB not supported. " + messageOut});
        }
    } catch (Throwable e) {
        logger.error(LoggerKeys.LOG_1_ARGS,
            new String[] {"Error encountered: " + e.toString()});
        try {
            //put message on error queue
            handleError(message, e);
        } catch (Throwable e2) {
            //retry to put message on error queue
            handleErrorAndRollBack(message, e2);    
        }
    }
}   
0

There are 0 answers