retry.backoff.ms
다음 재시도까지 대기 시간
If retries > 0, for example retries = 2147483647, retries are bounded by a timeout.
delivery.timeout.ms = 120000
(2분, 기본값)
이 타임아웃은 먼저 발생하는 다른 타임아웃을 아우를 정도로 큼
delivery.timeout.ms
>= linger.ms
+ retry.backoff.ms
+ request.timeout.ms
이 타임아웃 안에 확인받지 못하면 요청은 실패한 것이다.
구버전 카프카에서 멱등 프로듀서를 사용하지 않으면 재시도했을 때 메시지 순서가 뒤바뀔 수 있다.
max.inflight.requests.per.connection
(기본값 5)
한 번에 몇개의 요청을 전송할지 결정.
2 이상이면 그만큼 요청을 전송하고 응답을 기다림.
1로 설정해야 순서 보장 가능 ( 처리량은 낮아짐 )
enable.idempotence = true
: 멱등 프로듀서로 설정하기
true로 설정하면, 정확히 한 번 적재하는 로직이 성립되기 위해 프로듀서의 옵션들이 강제로 변경됨.
이렇게 설정되는 이유는 프로듀서가 적어도 한 번 이상 브로커에 데이터를 보냄으로써 브로커에 단 한 번만 데이터가 적재되는 것을 보장하기 위해서다.
멱등성 프로듀서는 정확히 한번 브로커에 데이터를 적재하기 위해 정말로 한번 전송하는 것이 아니다.
상황에 따라 프로듀서가 여러 번 전송하되 브로커가 여러 번 전송된 데이터를 확인하고 중복된 데이터는 적재하지 않는 것이다.