There is a discrepancy between current implementation and qpid-jms that may cause consumer to stop processing messages.
There may be an exception throw in NmsMessageConsumer.cs DeliverNextPending method which results in taking down SessionDispatcher. There are two cases when we can get an error here:
1) error returned from the attempted ACK that was sent
2) error while attempting to copy the incoming message.
In qpid-jms this is addressed with simple try/catch statement, and the error is redirected to connection ExceptionListener.