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.