title: Masstransit reconnection policy when RabbitMQ is down
body: <p>I have the following different scenarios:</p>
  <p><strong>Scenario 1</strong></p>
  <blockquote>
  <p>RabbitMQ is up.</p>
  <p>Consumer starts and subscribes correctly through MassTransit to RabbitMQ.</p>
  <p>RabbitMQ goes down.</p>
  <p>RabbitMQ goes up again.</p>
  <p>If Consumer tried to subscribe with <strong>busControl.StartAsync();</strong> then it won't reconnect anymore</p>
  <p>If Consumer tried to subscribe with <strong>busControl.Start();</strong> then it will correctly reconnect.</p>
  </blockquote>
  <p>Already find this a bit weird.. but okey.</p>
  <p><strong>Scenario 2</strong></p>
  <blockquote>
  <p>RabbitMQ is down</p>
  <p>Consumer goes up and tries to subscribe with <strong>busControl.Start();</strong>, which will fail due to RabbitMQ down</p>
  <p>RabbitMQ goes up</p>
  <p>Consumer is not able to reconnect to RabbitMQ</p>
  </blockquote>
  <p>But I need this case to be covered somehow..</p>
  <p>Registration:</p>
  <pre><code>private static void RegisterRabbitMQ(SimpleInjectorContainer container)
  {
      container.AddMassTransit(x =&gt;
      {
          x.AddBus(() =&gt; Bus.Factory.CreateUsingRabbitMq(cfg =&gt;
          {
              var host = cfg.Host(ConfigurationValuesProvider.Current.Get(&quot;RabbitMQHostName&quot;), hostConfigurator =&gt;
              {
  #if !DEBUG
                  hostConfigurator.Username(ConfigurationValuesProvider.Current.Get(&quot;RabbitMQUsername&quot;));
                  hostConfigurator.Password(ConfigurationValuesProvider.Current.Get(&quot;RabbitMQPassword&quot;));
  
                  hostConfigurator.UseCluster(c =&gt;
                  {
                      string[] hostnames = ConfigurationValuesProvider.Current.Get(&quot;RabbitMQNodes&quot;).Split(';');
                      c.ClusterMembers = hostnames;
                  });
  #endif
              });
          }));
      });
  }
  </code></pre>
  <p>Starting bus:</p>
  <pre><code>try
  {
      RegisterRabbitMQ(container);
      var busControl = container.GetInstance&lt;IBusControl&gt;();
      busControl.Start();
  }
  catch (Exception ex)
  {
      Log.Seq.Error(&quot;RabbitMQ broker is not reachable, BusControl cannot be started. &quot;, ex);
  }
  </code></pre>
  <p>thanks in advance!</p>