Tim Fox wrote:
Gordon Sim wrote:
Gordon Sim wrote:
Tim Fox wrote:
Perhaps the protocol needs to be extended?
It does seem that it could be useful to be able to move the prefetch
window without having to acknowledge the message.
A further thought here: it would be possible to resize the prefetch
winddow instead of moving it. i.e. if the prefetch is 100 and the
application is in control of when acknowledgements will be sent, then
after passing say the 80th message to the application, we could resize
the window to 180. When the acknowledgement is sent, we can resize it
back to 100.
I'm not sure how this would prevent the consumer from being overwhelmed.
If the prefetch window is resized to larger values as long as messages
aren't acknowledged, then, assuming messages can be sent to the consumer
faster then they can be processed by the consumer, they could
catastrophically build up on the client.
You would only increase the size to compensate for messages processed by
the application, but not yet acknowledged. So if the logical prefetch is
x (i.e. the maximum unprocessed messages allowed), and the application
has processed y messages but not acknowledged them then the actual
prefetch as far as the broker is concerned would be x + y, though the
number of unprocessed messages would still never go above x.