A consumer with a transacted session that dies after receive or in onMessage (due to some of the message content for example), but before the a transaction can complete will continue to receive the message.
The connection will die, the transaction will rollback, the broker will increment the redeliveryCounter and redispatch the message.
However the redeliveryPolicy, which is only checked on rollback (client side) will never kick in.
the result is infinite redelivery with an ever incrementing redeliveryCounter.
It is a reasonable expectation that this message would eventually find its way into the dlq.
The broker redelivery plugin does not help because it is triggered by the client side poison ack.
Either the broker redelivery plugin can get involved before dispatch, or a client can do a predispatch check.
We should look at porting the fixes done there over to NMS.ActiveMQ