[ 
https://issues.apache.org/jira/browse/QPID-2935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12929805#action_12929805
 ] 

Ken Giusti commented on QPID-2935:
----------------------------------

The 0.10 AMQP spec defines the use of "credit" as a mechanism to control the 
amount of data that is transferred between a client and a server (see section 
2.6.1. Flow Control in the AMQP spec 0.10).   In theory, the broker should be 
able to throttle the production rate of a client by intelligently managing the 
rate for which it replenishes credit to that client.   For example, the broker 
could delay the completion of a message transfer should it detect that one or 
more queues that are destinations of the message transfer are nearing their 
limits.

The current broker implementation supports the notion of "asynchronous 
enqueuing" - that there is a potential delay between the receipt of a message 
and the point in at which the message completes enqueueing to all destination 
queues.  The broker delays the completion of the message transfer (from the 
producer's point of view) until the enqueueing has completed.   This concept 
may be able to be extended to consider the capacity of the destination queues: 
do not complete a message transfer until all destination queues have a 
"reasonable" amount of capacity available.



> Support "best effort" producer flow control within the AMQP 0.10 
> implementation.
> --------------------------------------------------------------------------------
>
>                 Key: QPID-2935
>                 URL: https://issues.apache.org/jira/browse/QPID-2935
>             Project: Qpid
>          Issue Type: New Feature
>          Components: C++ Broker, C++ Client
>    Affects Versions: 0.9
>         Environment: any
>            Reporter: Ken Giusti
>            Assignee: Ken Giusti
>             Fix For: Future
>
>
> To what extent, if any, could producer flow control be supported on the 
> existing (pre-1.0) protocol?
> In the current C++ broker/client implementation, when a queue on the broker 
> fills to the point where it cannot accept any more messages 
> (--default-queue-limit hit), the broker will forcibly disconnect any client 
> that attempts to route a message to that queue.   This is an abrupt failure - 
> the producing client is not privy to the queue's remaining capacity.  The 
> broker provides no feedback to the producing client, which could be used to 
> throttle the client's message production rate.
> The purpose of this JIRA is to explore the possible methods for implementing 
> producer throttling on the current 0.10 C++ codebase. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to