protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _logger.LogInformation("Booking Processing Service Started");

            // Magic line to yield control of this background service back to the rest of the startup process
            await Task.Yield();

            // Create new consumer and producer
            var kafkaConsumerService = new KafkaConsumerService(_logger, _consumerConfig, KafkaTopics.TOPIC_BOOKING_REQUEST);
            var kafkaProducerService = new KafkaProducerService(_logger, _producerConfig, KafkaTopics.TOPIC_BOOKING_CONFIRMATION);

            while (!stoppingToken.IsCancellationRequested)
            {
                try
                {
                    // Wait for a new booking request
                    var bookingRequest = kafkaConsumerService.WaitAndRead <MovieBooking>(stoppingToken);
                    if (bookingRequest != null)
                    {
                        _logger.LogInformation($"Processing new booking: {bookingRequest}");

                        // Create new booking confirmation based on a request
                        var bookingConfirmation = new BookingConfirmation(bookingRequest);

                        // Publish a booking confirmation to a Kafka stream
                        await kafkaProducerService.Write(bookingConfirmation);
                    }
                }
                catch (Exception e)
                {
                    _logger.LogError($"Error in processing : {e.Message}");
                }
            }
        }
        public async Task <ActionResult> PostAsync([FromBody] MovieBooking booking)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _logger.LogInformation($"New movie booking received: {booking}");

            // Publish a new booking to the stream
            var kafkaProducerService = new KafkaProducerService(_logger, _config, KafkaTopics.TOPIC_BOOKING_REQUEST);
            await kafkaProducerService.Write(booking);

            return(Ok("Your booking is being processed"));
        }