title: Why is a subscription created for each level in the event interface hierarchy?
body: <p>I'm trying to understand how to properly publish and consume events by using using masstransit and azure service bus. I want to use interfaces as my message contract and my events inherits a hierarchy of interfaces.</p>
  
  <p>My consumers will consume multiple types of events; from what I understand "ReceiveEndpoint" is then the best option as "SubscriptionEndpoint" specifies a single message type.
  I’m aware that polymorphism is not supported by ASB.</p>
  
  <p>When setting up a receive endpoint for a single event interface, a subscription is created for each level in the heirarchy:</p>
  
  <p><img src="https://i.imgur.com/Ab27d1r.png" alt="service bus explorer"></p>
  
  <pre><code>    public interface IBasiestEventInterface { string P1 { get; } }
      public interface IBaserEventInterface : IBasiestEventInterface { string P2 { get; } }
      public interface IBaseEventInterface : IBaserEventInterface { string P3 { get; } }
  
      public class TheEvent : IBaseEventInterface
      {
          public string P1 { get; } = "A";
          public string P2 { get; } = "B";
          public string P3 { get; } = "C";
      }
  
      [TestFixture]
      public class MassTransitTests
      {
          [Test]
          public async Task CanBeConsumedAsInterfaceType()
          {
              var semaphore = new SemaphoreSlim(0);
  
              var publisher = Bus.Factory.CreateUsingAzureServiceBus(c =&gt;
              {
                  c.Host(MassTransitTestsHelper.BusConnectionString, h =&gt; { });
              });
  
              var consumer1 = Bus.Factory.CreateUsingAzureServiceBus(c =&gt;
              {
                  c.Host(MassTransitTestsHelper.BusConnectionString, h =&gt; { });
                  c.ReceiveEndpoint("test_receive_endpoint", e =&gt;
                  {
                      e.Handler((MessageHandler&lt;IBaseEventInterface&gt;) (_ =&gt;
                      {
                          semaphore.Release();
                          return Task.CompletedTask;
                      }));
                  });
              });
  
              await publisher.StartAsync();
              await consumer1.StartAsync();
  
              await publisher.Publish&lt;IBaseEventInterface&gt;(new TheEvent());
  
              (await semaphore.WaitAsync(10.Seconds())).Should().BeTrue();
          }
      }
  </code></pre>
  
  <p>Message is received as expected. It looks like the "forward to" to property in the subscriptions correlates to the hierarchy levels. Is the purpose of the additional subscriptions to add polymorphic event dispatching upon Azure Service Bus? </p>