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/

Reply via email to