You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Ivo Danihelka (JIRA)" <ji...@apache.org> on 2006/10/15 00:47:17 UTC

[jira] Reopened: (AMQ-855) Add support for prefetchSize = 0

     [ https://issues.apache.org/activemq/browse/AMQ-855?page=all ]

Ivo Danihelka reopened AMQ-855:
-------------------------------

             
There remains a bug to be fixed. The method MessageConsumer.receive() does not block at all when prefetchSize=0 is used.

The current code for ActiveMQMessageConsumer.receive() behaves like ActiveMQMessageConsumer.receiveNoWait(). The receive() could be fixed by using sendPullCommand(0) instead of sendPullCommand(-1). The sendPullCommand(0) works for me.

Thanks. My usage of activemq includes distributed slow consumers, so I'm very happy to be able to use zero prefetch.


Out of topic note:
It seems to me that it would be safer to use AtomicBoolean for field PrefetchSubscription.dispatching.

> Add support for prefetchSize = 0
> --------------------------------
>
>                 Key: AMQ-855
>                 URL: https://issues.apache.org/activemq/browse/AMQ-855
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: Broker
>    Affects Versions: 4.0.2, 4.0.1, 4.0
>         Environment: any
>            Reporter: Vadim Pesochinskiy
>         Assigned To: Hiram Chirino
>            Priority: Critical
>             Fix For: 4.1
>
>         Attachments: ActiveMQMessageConsumer.java.patch3, ActiveMQMessageConsumer.patch, ActiveMQMessageConsumer.patch2, PrefetchSubscription.java.patch2, PrefetchSubscription.java.patch3, PrefetchSubscription.patch, region.QueueSubscription.java.patch, ZeroPrefetchConsumerTest.java.patch, ZeroPrefetchConsumerTest.java.patch3
>
>
> 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: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira