title: RabbitMQ C# Client recovering from node failure on cluster with quorum queues
body: <p>I've set-up a three node RabbitMQ cluster with a <strong>quorum durable queue</strong>.</p>
  <p>I'm trying to find out how to implement a robust way to keep things running both on the producer and the consumer side (two .NET Core processes) in case of node failure.</p>
  <p>I'm using the following options on the <code>ConnectionFactory</code> class:</p>
  <pre class="lang-cs prettyprint-override"><code>var factory = new ConnectionFactory
  {
      HostName = hostname,
      AutomaticRecoveryEnabled = true,
      TopologyRecoveryEnabled = true,
      VirtualHost = vhost
  };
  </code></pre>
  <p>however, after starting the producer &amp; consumer test processes (which attempt to flood the queue), whenever I stop the master node on the cluster, the clients never recover from this situation, and an <code>OperationInterruptedException</code> is thrown on each call to <code>BasicPublish</code> (on the producer) or <code>BasicAck</code> (on the consumer).</p>
  <p>The clients connect to the cluster using a random ip choosen from the three nodes (as given from round-robin dns resolution).</p>
  <p>I've read somewhere that for <em>durable classic non-mirrored queues</em> this is the expected behavior, but what about quorum queues? Shouldn't they be a more efficient version of mirrored queues (although with some limitations)?</p>
  <p>Is there a way to recover from a single node failure without implementing all the reconnection logic in my clients?</p>