The Apache Qpid Broker-J supports a flow control mechanism which is triggered when a configured disk quota is exceeded. This is supported by the BDB and Derby virtualhosts.
This functionality blocks all producers on reaching the disk overflow limit. When consumers consume the messages, causing disk space usage to falls below the underflow limit, the producers are unblocked and continue working as normal.
Two limits can be configured:
overfull limit - the maximum space on disk (in bytes).
underfull limit - when the space on disk drops below this limit, producers are allowed to resume publishing.
The overfull and underful limit can be specified when a new virtualhost is created or an exiting virtualhost is edited. This can be done using the Store Overflow and Store Underfull settings within the virtual host creation and edit dialogue. If editing an existing virtualhost, the virtualhost must be restarted for the new values to take effect.
The disk quota functionality is based on "best effort" principle. This means the broker cannot guarantee that the disk space limit will not be exceeded. If several concurrent transactions are started before the limit is reached, which collectively cause the limit to be exceeded, the broker may allow all of them to be committed.
The Broker will also impose flow control if the filesystem hosting a virtualhost exceeds a configured percentage..
The Producer Flow Control can be configured on individual queue using Producer Flow Control overflow policy. For more details, please readSection 4.7.5, “Controlling Queue Size”.
There are two broker log messages that may occur if flow control through disk quota limits is enabled. When the virtual host is blocked due to exceeding of the disk quota limit the following message appears in the broker log
[vh(/test)/ms(BDBMessageStore)] MST-1008 : Store overfull, flow control will be enforced
When virtual host is unblocked after cleaning the disk space the following message appears in the broker log
[vh(/test)/ms(BDBMessageStore)] MST-1009 : Store overfull condition cleared
Apache Qpid, Messaging built on AMQP; Copyright © 2015 The Apache Software Foundation; Licensed under the Apache License, Version 2.0; Apache Qpid, Qpid, Qpid Proton, Proton, Apache, the Apache feather logo, and the Apache Qpid project logo are trademarks of The Apache Software Foundation; All other marks mentioned may be trademarks or registered trademarks of their respective owners