ActiveMQ does not deliver messages in priority order when the following conditions are true:
1. A consumer has prefetch set to one (or zero).
2. The consumer is created (consumerSession.createConsumer) prior to message delivery
3. Large maxPageSize is configured
The fix is to modify org.apache.activemq.broker.region.Queue to use a PrioritizationPendingList for the message in "pagedInPendingDispatch" so they are dispatched in priority order.
A test case reproducing the issue is included.
The patched file deltas are included.