When I throw an Exception in my handler which is being called by the MessageListnerContainer, (with AutoAck turned off), the spring code does not seem to handle this very well.

I am using the Ack as a way of creating a psuedo transaction on listening...

do some work

If no exceptions, ack message.

The problem is when an exception is thrown in the "do some work" part the message is left unacked and the queue unreadable.

Shouldnt the code close the channel/connection to flush the non-acked message back onto the queue for re-reading ?