Queue threshold events are currently level-sensitive and require a rate-limiting feature. Every time a message is enqueued and the queue depth is above the configured threshold, an event is potentially raised. The repeat-interval attribute prevents the event from being raised too frequently.
Also, there is no way to produce an event for a lower or going-down threshold.
The threshold feature should be changed to be edge-triggered as follows:
Per-queue configuration for thresholds is:
- upper-threshold (bytes and messages)
- lower-threshold (bytes and messages)
Two event types are (or one type with an argument) defined:
- threshold crossed increasing
- threshold crossed decreasing
The increasing event is raised when the queue depth goes from (upper-threshold - 1) to upper-threshold.
The decreasing event is raised when the queue depth goes from (lower-threshold + 1) to lower-threshold.
The upper and lower thresholds should have some gap between them to establish hysteresis which will result in limited event rates.
Message and Byte thresholds will be handled independently.