diff --git a/include/cppkafka/utils/buffered_producer.h b/include/cppkafka/utils/buffered_producer.h index 1ddf65d..e9bf63f 100644 --- a/include/cppkafka/utils/buffered_producer.h +++ b/include/cppkafka/utils/buffered_producer.h @@ -129,7 +129,18 @@ void BufferedProducer::flush() { messages_acked_ = 0; while (messages_acked_ != expected_acks_) { - producer_.flush(); + try { + producer_.flush(); + } + catch (const HandleException& ex) { + // If we just hit the timeout, keep going, otherwise re-throw + if (ex.get_error() == RD_KAFKA_RESP_ERR__TIMED_OUT) { + continue; + } + else { + throw; + } + } } }