public async Task ProducerConsumerIntegrationTest()
        {
            //arrange
            var car = new Car
            {
                BrandName     = "Jeep",
                Model         = "2017",
                IsSportCar    = true,
                NumberOfDoors = 2
            };

            var message = JsonConvert.SerializeObject(car);

            //producer
            var config            = new ProducerConfiguration();
            var producerConfig    = config.CreateConfig();
            var producer          = config.CreateProducer(producerConfig);
            var producerService   = new ProducerService();
            var deleveredResponse = await producerService.SendMessage(producer, "cars", message);

            Assert.IsNotNull(deleveredResponse);
            Assert.IsNotNull(deleveredResponse.TopicOffset);
            Assert.AreEqual(message, deleveredResponse.Result);
            var carResponse = JsonConvert.DeserializeObject <Car>(deleveredResponse.Result);

            Assert.AreEqual(car.BrandName, carResponse.BrandName);
            Assert.AreEqual(car.Model, carResponse.Model);
            Assert.AreEqual(car.IsSportCar, carResponse.IsSportCar);
            Assert.AreEqual(car.NumberOfDoors, carResponse.NumberOfDoors);

            //Consumer
            var consumerServiceConfig = new ConsumerServiceConfig();
            var consumerConfig        = consumerServiceConfig.CreateConfig();
            var consumerService       = new ConsumerService();
            // CancellationTokenSource cts = new CancellationTokenSource();
            var consumerResult = consumerService.CreateConsumerAndConsumeSingleMessage(consumerConfig, "cars", CancellationToken.None);

            Assert.IsNotNull(consumerResult);

            Assert.IsNotNull(consumerResult.TopicOffset);
            Assert.AreEqual(message, consumerResult.Message);
            var carConsumerResponse = JsonConvert.DeserializeObject <Car>(deleveredResponse.Result);

            Assert.IsNotNull(carConsumerResponse);
            Assert.AreEqual(car.BrandName, carConsumerResponse.BrandName);
            Assert.AreEqual(car.Model, carConsumerResponse.Model);
            Assert.AreEqual(car.IsSportCar, carConsumerResponse.IsSportCar);
            Assert.AreEqual(car.NumberOfDoors, carConsumerResponse.NumberOfDoors);
        }