public async Task StartAsync()
 {
     if (publisher != null)
     {
         return;
     }
     publisher = new RabbitMqPublisher();
     consumer  = new RabbitMqConsumer();
     await Task.WhenAll(publisher.StartAsync(), consumer.StartAsync());
 }
        public static async Task GenerateStatsAsync(int numberOfSecondsToRun)
        {
            var sender   = new RabbitMqPublisher();
            var receiver = new RabbitMqConsumer();

            try
            {
                await sender.StartAsync();

                await receiver.StartAsync();

                await Task.Delay(numberOfSecondsToRun * 1000);
            }
            finally
            {
                await sender.StopAsync();

                await receiver.StopAsync();
            }
        }