The default CommitRecovery used in ConsumerSettings unless a different one has been specified. The default recovery strategy only retries RetriableCommitFailedException
s and RebalanceInProgressException
s. These exceptions are retried with a jittered exponential backoff, where the time in milliseconds before retrying is calculated using:
Random.nextDouble() * Math.min(10000, 10 * Math.pow(2, n))
where n
is the retry attempt (first attempt is n = 1
). This is done for up to 10 attempts, after which we change to retry using a fixed time of 10 seconds, for up to another 5 attempts. If at that point we are still faced with RetriableCommitFailedException
or RebalanceInProgressException
, we give up and raise a CommitRecoveryException with the last such error experienced.
The sum of time spent waiting between retries will always be less than 70 220 milliseconds, or ~70 seconds. Note that this does not include the time for attempting to commit offsets. Offset commit times are limited with ConsumerSettings.commitTimeout.