[ https://issues.apache.org/jira/browse/QPID-2935?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ken Giusti updated QPID-2935: ----------------------------- Attachment: QPID-2935.tgz A very hacky proof-of-concept of the "delayed completion" approach. Includes same sender and receiver clients (including a spout derivation). Loosely based on the IncompleteMessageList object in the broker's SessionState object. Associates a list of overflow messages and a timer thread with the broker's SessionState for a (producer) client. Should a message fail to enqueue to a queue due to limit overflow, this hack stores the message on the overflow list. All further messages that arrive from that client are also queued to the overflow list (preserving order). Periodically, the timer thread attempts to route the message at the head of the overflow list. Should the routing succeed (there was room on the destination queues), the head message is removed from the list, and the next message is routed. I've modified the client side to wait for capacity to become available when it is exhausted. When run against the example slow consumer (receiver.cpp), the sender client will occasionally block in the send() api call, until space becomes available on the queue. > 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 > > Attachments: QPID-2935.tgz > > > 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