Using a pull consumer it should be possible to always get the most recent high priority message. Even with a default page size, using lazy dispatch should pull in the correct number of messages from the cursor to satisfy each consumer.
However periodic message expiry processing and queue browsing via jms or jmx will affect dispatch by pulling messages into the cursor.
Using a small maxBrowsePageSize and maxExpirePageSize should suffice to ensure a window for dispatch but this currently fails because the limits are not enforced.
Also, asyncDispatch treats a jms browser as a consumer w.r.t paging messages from the cursor, which has a similar side effect and thwarts lazyDispatch