On 01/03/17 16:53, Kai Hudalla wrote:
If the sender has e.g. 100 credits left and
indeed has content to send 100 messages then a drain doesn't prevent him from
sending all 100 messages. However, flowing 0 link-credit to the sender has the
effect of immediately stopping him (not considering messages in flight, of
course). This pattern therefore has the big advantage that a receiver can be
generous at first, issuing e.g. 200 credits, in order to reduce the number of
flows exchanged while things go well, and then simply stop the sender once
resources become more constrained on the receiver side.

While I agree there is a difference between drain and revoking credit, even if you issue a flow(0), you still have to handle N messages after issuing it, where N is balance at the time you revoked it.

(Since that many messages may already be 'inflight'. As the balance gets higher it is more likely that the sender gets the flow before they have exhausted the credit of course.)

A couple of hundred message credits though is not a lot in this case. (In my little trial run, if the broker was filled up before I started the client, it would exhaust the credit - 100 in my case - before revoking it had any effect).

If you can't handle the messages normally, e.g. if suddenly wherever you are putting can't accept them any more, then you can always release those messages.

With the approach currently taken by proton-j this pattern is effectively
impossible to implement and you always end up with handing out only very few
credits at a time because the receiver always needs to consider potential
resource constraints or congestion that might occur in the future ...


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
For additional commands, e-mail: users-h...@qpid.apache.org

Reply via email to