아파치 카프카 - Retry와 Idempotent Producer

함궈·2023년 10월 7일
0

아파치카프카

목록 보기
6/10
post-thumbnail

retry.backoff.ms 다음 재시도까지 대기 시간

Producer Timeouts

If retries > 0, for example retries = 2147483647, retries are bounded by a timeout.

timeout 설정

delivery.timeout.ms = 120000 (2분, 기본값)

이 타임아웃은 먼저 발생하는 다른 타임아웃을 아우를 정도로 큼

delivery.timeout.ms >= linger.ms + retry.backoff.ms + request.timeout.ms

이 타임아웃 안에 확인받지 못하면 요청은 실패한 것이다.

Producer Retries : Warning for old version

구버전 카프카에서 멱등 프로듀서를 사용하지 않으면 재시도했을 때 메시지 순서가 뒤바뀔 수 있다.

max.inflight.requests.per.connection (기본값 5)

한 번에 몇개의 요청을 전송할지 결정.

2 이상이면 그만큼 요청을 전송하고 응답을 기다림.

1로 설정해야 순서 보장 가능 ( 처리량은 낮아짐 )

Idempotent Producer

enable.idempotence = true : 멱등 프로듀서로 설정하기
true로 설정하면, 정확히 한 번 적재하는 로직이 성립되기 위해 프로듀서의 옵션들이 강제로 변경됨.

  • retries = Integer.MAX_VALUE
  • acks = all

이렇게 설정되는 이유는 프로듀서가 적어도 한 번 이상 브로커에 데이터를 보냄으로써 브로커에 단 한 번만 데이터가 적재되는 것을 보장하기 위해서다.

멱등성 프로듀서는 정확히 한번 브로커에 데이터를 적재하기 위해 정말로 한번 전송하는 것이 아니다.

상황에 따라 프로듀서가 여러 번 전송하되 브로커가 여러 번 전송된 데이터를 확인하고 중복된 데이터는 적재하지 않는 것이다.


출처

최원영, 아파치 카프카 애플리케이션 프로그래밍 with 자바, 비제이퍼블릭, 2021

Udemy Apache Kafka 강의

0개의 댓글