title: MassTransit Round-Robin balance keeps sending message to the same queue even though it's busy
body: <p>I am trying to set up MassTransit with RabbitMQ for my application.</p>
  
  <p>I am using CastleWindsor DI and .Net Framework 4.7.</p>
  
  <p>The way I register my consumers and bus in the Program.cs is:</p>
  
  <pre><code>container.AddMassTransit(x =&gt;
  {
      x.AddBus(context =&gt; Bus.Factory.CreateUsingRabbitMq(cfg =&gt;
      {
          var host = cfg.Host(configurationProvider.RabbitHostName);
  
          x.AddConsumer&lt;FactAddedFirstHandler&gt;();
          x.AddConsumer&lt;FactAddedSecondHandler&gt;();
  
          cfg.ReceiveEndpoint("addedFactQueue", ec =&gt;
          {    
              cfg.ConfigureEndpoints(container);
          });
      }));
  
  });
  
  IBusControl busControl = container.Kernel.Resolve&lt;IBusControl&gt;();
  busControl.StartAsync();
  </code></pre>
  
  <p>An example of an Handler is:</p>
  
  <pre><code>internal class FactAddedFirstHandler : IConsumer&lt;FactAddedEvent&gt;
  {
  
      public async Task Consume(ConsumeContext&lt;FactAddedEvent&gt; context)
      {
          //Do stuff
      }
  }
  </code></pre>
  
  <p>Let's call this main running application simply as <strong>Application</strong>.
  What I want to achieve are 2 different things:</p>
  
  <p>1) whenever a <strong>FactAddedEvent</strong> is thrown (from another service) then <strong>Application</strong> delivers the message to both consumers: FactAddedFirstHandler and FactAddedSecondHandler.</p>
  
  <p>This happens correctly because if I understood correctly MassTransit creates an exchange and delivers the message to all the consumers subscribed to that message.</p>
  
  <p>2) if I run 2 instances of <strong>Application</strong> (let's call them <strong>Application1</strong> and <strong>Application2</strong>) then Round-Robin is applied. Meaning that RabbitMQ balances the messages to the <strong>Application</strong> istance that is free.</p>
  
  <p>This happens <em>partly</em> correctly. Meaning that if I have both istances up and running and try to send a <strong>FactAddedEvent</strong> then one time the event is received by <strong>Application1</strong> and one time by <strong>Application2</strong>.
  Also, if I bring for example <strong>Application2</strong> down then all the messages are received by <strong>Application1</strong>. So far, everything working properly.</p>
  
  <p><strong>THE PROBLEM:</strong> the problem I have appears when I am voluntary blocking for example <strong>Application1</strong>. Let's say I send the <strong>FactAddedEvent</strong>, it's received by <strong>Application1</strong> but in the consuming method of the handler I set a breakpoint and I wait there. Therefore here I am voluntary blocking <strong>Application1</strong>. Now what I would expect is that since <strong>Application1</strong> is blocked, RabbitMQ will deliver all the next events I throw to ONLY <strong>Application2</strong>. Instead what it just does is: once RabbitMQ sends it to <strong>Application1</strong> once it sends it to <strong>Application2</strong>, no matter what. So in <strong>Application1</strong> there will be a queue of messages piling up even though <strong>Application2</strong> is free to do work.</p>
  
  <p>What am I doing wrong? Thanks in advance</p>