activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "james strachan (JIRA)" <>
Subject [jira] Commented: (AMQ-855) Add support for prefetchSize = 0
Date Wed, 09 Aug 2006 08:33:23 GMT
    [ ] 
james strachan commented on AMQ-855:

BTW just to be absolutely clear - here's how I think we should fix Vadim's use case.

If we had full support for priority based dispatching so that...

* all high priority messages are dispatched before *ANY* medium priority.
* all medium priority messages are dispatched before *ANY* low priority
* all low priority messages are then dispatched

Then the consumers all have a prefetch of 1 and each consumer subscribes to high, medium and
low priority messages.

The reason I don't see the prefetch of zero fixing the issue is as follows..

imagine the client did this...

message = highConsumer.receive(timeout);
if (message == null) {
   // a high message could have just arrived now...
   message = mediumConsumer.receive(timeout);
   // a high message could have just arrived now...
if (message == null) {
   // a high message could have just arrived now...
   message = lowConsumer.receive(timeout);
   // a high message could have just arrived now...
// a high message could have just arrived now...

there's still a chance the client would miss the high priority messages arriving as they will
spend a reasonable amount of time in wait loops waiting to request-response to the broker.

The only way to truly guarrentee ordering is to get the broker to do it.

> Add support for prefetchSize = 0
> --------------------------------
>                 Key: AMQ-855
>                 URL:
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: Broker
>    Affects Versions: 4.0, 4.0.1, 4.0.2
>         Environment: any
>            Reporter: Vadim Pesochinskiy
>            Priority: Critical
>             Fix For: 4.2
> This feature would enable to support following test case:
> 2 servers are processing 3 submitted jobs with following processing times 10 min, 1 min,
1 min. This sequence should finish in 10 minutes as one service will pick up the 10 minutes
job, meanwhile the other one should manage the two 1 minute jobs. Since I cannot set prefetchSize=0,
one of the 1 minute jobs is sitting in prefetch buffer and the jobs are processed in 11 minutes
instead of 10.
> This is simplification of the real scenario where I have about 30 consumers submitting
jobs to 20 consumers through AMQ 4.0.1. I have following problems:
> • Messages are sitting in prefetch buffer are not available to processors, which results
in a lot of idle time.
> • Order of processing is random. For some reason Job # 20 is processed after Job # 1500.
Since senders are synchronously blocked this can result in time-outs.
> • Some requests are real-time, i.e. there is a user waiting, so the system cannot wait,
so AMQ-850 does not fix this issue.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message