title: RabbitMQ Multiple Unique Consumers on Windows Service
body: <p>I've searched StackOverflow and I don't think the other issues around multiple consumers match what I am trying.</p>
  
  <p>I have a Windows service that starts and registers to monitor <strong>two different</strong> RabbitMQ queues.  If I only register it to listen to 1 queue, it works fine.  When I try to get it to listen to both queues, only the 2nd listener works.</p>
  
  <pre><code>var responseConsumer = new EventingBasicConsumer(_responseChannel);
  
  responseConsumer.Received += (model, ea) =&gt;
  {
      var message = Encoding.UTF8.GetString(ea.Body);
      // PROCESS MESSAGE
      IssuerProcessor processor = new IssuerProcessor("Processed Message(" + pause + "ms) : ");
  
      Thread.Sleep(pause);
  
      var ret = processor.ProcessResponseMessage();
      Console.WriteLine("Processed message: " + ret);
      ulong deliveryTag = ea.DeliveryTag;
  
      _responseChannel.BasicAck(deliveryTag, false);
      Console.WriteLine("ACK RESPONSE Delivery Tag (" + deliveryTag.ToString() + "): " + ret);
  }; // end requestConsumer.Received
  
  _responseChannel.BasicConsume(queue: RESPONSE_QUEUE, autoAck: autoAck, consumer: responseConsumer);
  </code></pre>
  
  <p>The other consumer looks just like this one, but it listens to a different queue, using the same connection, with a different channel.</p>
  
  <p>Here is the initialization for both:</p>
  
  <pre><code>_requestChannel = _connection.CreateModel();
  _responseChannel = _connection.CreateModel();
  
  _requestChannel.ExchangeDeclare(EXCHANGE, ExchangeType.Direct, true, false, null);
  _requestChannel.QueueDeclare(queue: REQUEST_QUEUE, durable: true, exclusive: false, autoDelete: false, arguments: null);
  _requestChannel.BasicQos(0, 1, false);
  _requestChannel.QueueBind(REQUEST_QUEUE, EXCHANGE, REQUEST_QUEUE, null);
  
  _responseChannel.ExchangeDeclare(EXCHANGE, ExchangeType.Direct, true, false, null);
  _responseChannel.QueueDeclare(RESPONSE_QUEUE, durable: true, exclusive: false, autoDelete: false, arguments: null);
  _responseChannel.BasicQos(0, 1, false);
  _responseChannel.QueueBind(RESPONSE_QUEUE, EXCHANGE, RESPONSE_QUEUE, null);
  </code></pre>