title: NServiceBus - How to get separate queue for each message type receiver subscribes to?
body: <p>I have a following situation:</p>
  
  <p><img src="https://i.stack.imgur.com/Kb4bn.png" alt="enter image description here"></p>
  
  <p>So, receiver subscribes to two kind of events: eventA and eventB. NServiceBus creates queue  for receiver (Receiver) and places messages of type eventA and eventB to to same queue. Question is, if I can configure NServiceBus to use separate queues (ReceiverEventA and ReceiverEventB) for each type of event for receiver? Or can I have two receivers in single process (and each receiver separate queue).
  Thing is, that EventA takes much longer to process than EventB, and they are independent - so if they would be in separate queues, they could be processed concurrently.</p>
  
  <p>Update: If i'm going with naive approach like this, receiver fails to start with null reference exception:</p>
  
  <pre><code> private static IBus GetBus&lt;THandler, TEvent&gt;()
      {                   
          var bus = Configure.With(new List&lt;Type&gt;
                                       {
                                           typeof(THandler), 
                                           typeof(TEvent),
                                           typeof(CompletionMessage)
                                       })
              .Log4Net()
              .DefaultBuilder()
              .XmlSerializer()
              .MsmqTransport()
              .IsTransactional(true)
              .PurgeOnStartup(false)
              .UnicastBus()
              .LoadMessageHandlers()
              .ImpersonateSender(false);
  
          bus.Configurer.ConfigureProperty&lt;MsmqTransport&gt;(x =&gt; x.InputQueue, "Queue" + typeof(THandler).Name);
  
          return bus.CreateBus().Start();
      }
  
      [STAThread]
      static void Main()
      {
          Busses = new List&lt;IBus&gt;
                       {
                           GetBus&lt;ItemEventHandlerA, ItemEventA&gt;(),
                           GetBus&lt;ItemEventHandlerB, ItemEventB&gt;()
                       };          
  
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          Application.Run(new TestForm());
      }
  </code></pre>
  
  <p>Exception stack trace is:</p>
  
  <blockquote>
    <p>at NServiceBusTest2.WinFormsReceiver.Program.GetBusTHandler,TEvent in        C:\Users\User\Documents\Visual Studio        2010\Projects\NServiceBusTest2\NServiceBusTest2.WinFormsReceiver\Program.cs:line 57<br>
       at NServiceBusTest2.WinFormsReceiver.Program.Main() in C:\Users\User\Documents\Visual    Studio 2010\Projects\NServiceBusTest2\NServiceBusTest2.WinFormsReceiver\Program.cs:line 26<br>
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)<br>
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity,       String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()<br>
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)<br>
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,        ContextCallback callback, Object state, Boolean ignoreSyncCtx)<br>
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,     ContextCallback callback, Object state)<br>
       at System.Threading.ThreadHelper.ThreadStart()    </p>
  </blockquote>