On 8/9/06, Komandur <[EMAIL PROTECTED]> wrote:
I read the link, reread the thread & I misunderstood the prefetch feature ... the broker is pushing messages into the clientside pre-fetch buffers upto the limit. Here are some ideas, let me know what you think ... 1. can we use an 'elastic prefetch' buffer based on a sliding window (like in TCP) - this reacts to client (mis)behavior
We could start with a prefetch of 1 and increase it over time for well behaving clients. However it doesn't fix the problem as a mis-behaving consumer could still hog at least one message - though this would reduce the imact from 1000 or so to 1.
2. When the broker detects a misbehaving client, reclaim the unAcked messages for other active consumers (and make the window size 0 or 1 in step 1 above)
If a client/connection misbehaves (e.g. becomes inactive) then the connection is closed and all consumers are closed too causing all their unacked messages to be redelivered. The issue AMQ-850 is specifically to reclaim the prefetch buffer of unacked messages from a misbehaving consumer. e.g. if 1 consumer goes bad yet the rest of the client appears to be fine such as if a consumer is created but never used or a consumer locks up before grabbing another message or during the processing of a message. -- James ------- http://radio.weblogs.com/0112098/
