When I think about non-trivial semantics such as the JMS semantics, what would be ideal is that a state machine drives the delivery so that there is a clear picture of what needs to be done as a function of the message state and conditional optimizations. If this is not explicitly coded into the implementation, we at least need to go through it logically to validate the behavior. We need to consider the behavior in the non-trivial cases of failures, recovery, contended queues with a mixture of message listeners, msg pullers, etc.