activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tim Bain (JIRA)" <>
Subject [jira] [Updated] (AMQ-5361) Allow multiple slow consumer strategies to be used together
Date Fri, 26 Sep 2014 20:24:33 GMT


Tim Bain updated AMQ-5361:
    Summary: Allow multiple slow consumer strategies to be used together  (was: Allow for
multiple slow consumer strategies to be used together)

> Allow multiple slow consumer strategies to be used together
> -----------------------------------------------------------
>                 Key: AMQ-5361
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Broker
>    Affects Versions: 5.9.0
>            Reporter: Tim Bain
> AMQ-378 allowed a pluggable policy for aborting consumers that were slow, where a consumer
was slow if the broker was holding a number of messages for it equal to the consumer's prefetch
buffer size, in addition to the same number of messages already in the consumer's prefetch
buffer.  AMQ-4621 added the ability to use a different slow consumer strategy and provided
one other strategy, to consider a consumer slow if it hasn't acked a message in a certain
amount of time.
> These strategies each has certain things it protects well against while not protecting
against others, but I want the ability to be protected from all of them, by being able to
select multiple SlowConsumerStrategy implementations for my needs.  This would also allow
us to use future SlowConsumerStrategy implementations (e.g. AMQ-5361) alongside the two that
exist today.
> This should be done by extracting from the SlowConsumerStrategy interface a SlowConsumerIdentificationStrategy
interface that would determine which consumers were considered slow according to that strategy.
 We'd end up with two classers implementing SlowConsumerIdentificationStrategy (e.g. PendingMessagesSlowConsumerIdentificationStrategy
and AckDelaySlowConsumerIdentificationStrategy), extracted from AbortSlowConsumerStrategy
and AbortSlowAckConsumerStrategy, respectively.  AbortSlowAckConsumerStrategy should go away
(anything in it that doesn't belong in AckDelaySlowConsumerIdentificationStrategy belongs
in AbortSlowConsumerStrategy or is already there e.g. the run() method), and AbortSlowConsumerStrategy
should get a Set<SlowConsumerIdentificationStrategy> to allow multiple different SlowConsumerIdentificationStrategies
to be used together.  The union of the results of calling each SlowConsumerIdentificationStrategy's
identifySlowConsumers() method should then be passed to abortSubscription().

This message was sent by Atlassian JIRA

View raw message