Kafka Producer는 메시지를 브로커로 보내는 과정에서 다양한 단계로 처리된다.
이 과정에서 재시도(Retries)와 Backoff는 메시지 전송 실패 시 안정성을 확보하는 핵심 메커니즘이다.
send() 호출
producer.send(record)를 호출하면 메시지 전송이 시작됨.Batching
AwaitSend / RecordAccumulator
Inflight
max.in.flight.requests.per.connection으로 제한됨.Retries
Backoff는 실패한 요청을 즉시 재시도하지 않고, 일정 시간 대기한 후 재시도하는 기법이다.
이 방식은 시스템 부하를 줄이고, 일시적인 오류(네트워크 지연, 브로커 과부하, 외부 서비스 장애 등)가 복구될 시간을 확보할 수 있게 해준다.

이미지에서 보듯, 재시도 횟수가 증가할수록 대기 시간도 점차 늘어나며 단계적으로 재시도가 수행된다.
Kafka Producer/Consumer는 재시도와 backoff 관련 설정을 제공한다.
retry.backoff.ms: 재시도 간격(ms) delivery.timeout.ms: 메시지 전송 전체 허용 시간 max.poll.interval.ms 등과 조합하여 안정적인 재시도 정책 구성 가능💡 결론
Kafka Producer에서 Retries 단계에 Backoff를 적용하면, 시스템 과부하를 줄이고 안정성을 높일 수 있다.