You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Ken Giusti (JIRA)" <ji...@apache.org> on 2010/11/09 00:18:07 UTC

[jira] Commented: (QPID-2935) Support "best effort" producer flow control within the AMQP 0.10 implementation.

    [ 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-subscribe@qpid.apache.org