diff --git a/include/cppkafka/utils/buffered_producer.h b/include/cppkafka/utils/buffered_producer.h index d3620eb7..55063f2a 100644 --- a/include/cppkafka/utils/buffered_producer.h +++ b/include/cppkafka/utils/buffered_producer.h @@ -581,6 +581,12 @@ bool BufferedProducer::flush(std::chrono::milliseconds ti remaining = timeout - std::chrono::duration_cast (std::chrono::high_resolution_clock::now() - start_time); } while (!flush_queue.empty() && (remaining.count() > 0)); + + // Re-enqueue remaining messages in original order + if (!flush_queue.empty()) { + std::lock_guard lock(mutex_); + messages_.insert(messages_.begin(), std::make_move_iterator(flush_queue.begin()), std::make_move_iterator(flush_queue.end())); + } } else { async_flush();