Priority Queue (Single Pool)
A queue is usually a first-in, first-out (FIFO) structure, and consumers typically receive messages in the same order that they were posted to the queue. However, some message queues support priority messaging. The application posting a message can assign a priority and the messages in the queue are automatically reordered so that those with a higher priority will be received before those with a lower priority. The figure illustrates a queue with priority messaging.
When to Use
- The system must handle multiple tasks that have different priorities.
- Different users or tenants should be served with different priority.
Monitor the processing speed on different labels to ensure that the messages in these queues are processed at the expected rates.
Handling Edge Case
Dynamically increase the priority of a queued message as it ages. To ensure it eventually get processed.
We need to ensure the following methods are available for normal operations
We need to provide incoming/outgoing flow rate for different priorities in a configurable sliding time window
We should be able to configure the rate and intensity at which old message will be increased in priority
Possible Future Improvements
- Make it compatible for distributed systems possibly through redis.
- Make the stats available for grafana and prometheus.