<div dir="ltr"><div><div>On my application, after calling IModel.BasicPublish(); , if I call IModel.Close() afterwards the app blocks.</div><div><br></div><div>In my development machine I noticed that the call unlocks and proceeds when I free disk space above threshold (that's how I figured out that it was the Flow Control mechanism that blocked my connection). In the production environment I need my clients not to block when this happens.</div></div><div><br></div><div>According to this <a href="https://www.rabbitmq.com/memory.html">article</a> on Flow Control:</div><div><br></div><div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">There are two flow control mechanisms in RabbitMQ. Both work by exerting TCP backpressure on connections that are publishing too fast. They are:<ul style="margin: 10px 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, sans-serif; line-height: 18px;"><li style="list-style-type: none; background-image: url(https://www.rabbitmq.com/img/li.gif); margin: 0px; padding: 3px 0px 2px 10px; background-position: 1px 9px; background-repeat: no-repeat no-repeat;">A per-connection mechanism that prevents messages being published faster than they can be routed to queues.</li></ul><ul style="margin: 10px 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Verdana, sans-serif; line-height: 18px;"><li style="list-style-type: none; background-image: url(https://www.rabbitmq.com/img/li.gif); margin: 0px; padding: 3px 0px 2px 10px; background-position: 1px 9px; background-repeat: no-repeat no-repeat;">A global mechanism that prevents any messages from being published when the <a href="https://www.rabbitmq.com/memory-use.html" style="color: rgb(68, 68, 68); font-weight: bold;">memory usage</a> exceeds a configured threshold or free disk space drops below a configured threshold.</li></ul>Both mechanisms will temporarily <em>block</em> connections - the server will pause reading from the sockets of connected clients which send content-bearing methods (such as <span class="code " style="color: rgb(51, 51, 51); font-family: 'Courier New', Courier, monospace; font-size: small; white-space: nowrap;">basic.publish</span>) which have been blocked. Connection heartbeat monitoring will be disabled too.</blockquote></div><div> </div><div>on the bottom of that article, there's a link to this <a href="https://www.rabbitmq.com/connection-blocked.html">other article</a>, which shows a way to handle blocked connections in both Java and .NET (I'm using .NET API)  through events.</div><div><br></div><div>What is the best way to handle this situation in the client? Do I have to implement those event handlers and prevent any future calls to IModel.BasicPublish() when the connection is blocked?</div><div><br></div><div>RabbitMQ Version: 3.1.0</div><div>Client .NET Version: 3.0.4.0</div></div>