The quote from <https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html#callout_kafka_consumers__reading_data_from_kafka_CO2-1>

> 
> The drawback is that while commitSync() will retry the commit until it
>  either succeeds or encounters a non-retriable failure, commitAsync()
>  will not retry.
> 
> 
> 

This phrase is not clear to me. I suppose that consumer sends commit request to broker and in case if the broker doesn't respond within some timeout it means that the commit failed. Am I wrong?

Can you clarify the difference of `commitSync` and `commitAsync` in details?  

Also, please provide use cases when which commit type should I prefer.