public MsgNThenRabbitIntegration(ITestOutputHelper output)
        {
            _output = output;
            var serviceCollection = CreateServiceCollection();

            serviceCollection.AddSingleton <IMessageHandler, BlockMessageHandler>();
            var messageGroupHandler = Substitute.For <IMessageGroupHandler>();

            serviceCollection.AddSingleton <IMessageGroupHandler>(messageGroupHandler);

            var serviceProvider = serviceCollection.BuildServiceProvider();

            _messageHandler   = (BlockMessageHandler)serviceProvider.GetRequiredService <IMessageHandler>();
            _listener         = serviceProvider.GetRequiredService <IRabbitMqListener>();
            _andThenPublisher = serviceProvider.GetRequiredService <IMessageAndThenPublisher>();
            _rabbit           = serviceProvider.GetRequiredService <IConnection>();
            _output.WriteLine("Binding");

            _andThenPublisher.BindDirectQueue(ExchangeName, QueueName);
        }
 private static void SendMessages(IMessageAndThenPublisher andThenPublisher, string exchangeName, int numMessages)
 {
     for (int i = 0; i < numMessages; i++)
     {
         andThenPublisher.PublishSingle(new SimpleMessage()
         {
             Body = new byte[1] {
                 (byte)'a'
             },
             Exchange   = exchangeName,
             RoutingKey = null,
             Properties = new MessageProperties()
         }, new SimpleMessage()
         {
             Properties = new MessageProperties(),
             Body       = new byte[0],
             Exchange   = "TestAndThen"
         }, AndThenDeliveryMode.FromLastClient);
     }
 }