Using Priority Messaging
For general information about how priority messaging works in Universal Messaging, see Priority Messaging.
In certain scenarios it may be desirable to deliver messages with differing levels of priority over the same channel or queue. Universal Messaging provides the ability to expedite messages based on a priority level. Messages with higher levels of priority are able to be delivered to clients ahead of lower priority messages. The priority is a numeric value in the range 0 (lowest priority) to 9 (highest priority).
Universal Messaging achieves this capability through a highly concurrent and scalable implementation of a priority queue. Where in a typical queue events are first in first out, in a priority queue the message with the highest priority is the first element to be removed from the queue. In Universal Messaging each client has its own priority queue for message delivery.
The following code snippet demonstrates how to set priority on a message:
nConsumeEvent evt;
...
evt.getAttributes().setPriority((byte) 9);
Priority messaging allows for a high priority message to be delivered ahead of a backlog of lower priority messages. Ordering of delivery is done dynamically on a per client basis.
Priority messaging is enabled by default, there are no configuration options for this feature.
As priority messaging is done dynamically, events may not appear in strict order of priority. Higher priority events are expedited on a best effort basis, and the effects become more noticeable as load increases.