Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
5.8.0
-
None
Description
The existing AbortSlowConsumer policy is event driven. It depends on a consumer slow event that is triggered when the prefetch is reached and there are subsequent dispatches.
With prefetch=0|1 there still needs to be throughput to determine that the consumer is slow so one message can be pending if there are no new messages to sent to the destination.
Providing an alternative implementation that will periodically poll consumers for their last ack time will be more deterministic. The slow advisory may never fire, but the consumer will get aborted if it does not ack in a timely manner.
if lastAckTime exceeds the max and there are dispatched messages it can be a candidate for removal.
Optionally lastAckTime exceeding and no dispatched messages can be a way to remove idle consumers. Not sure if that is necessary.