home
5. 멱등성 프로듀서
- 카프카는 기본 프로듀서는 적어도 한번 전달. 즉 중복 발생할 수 있음
enable.idempotence
옵션을 True로 한다. 3. 버전 부터는 디폴트가 True이다.- config에
ENABLE_IDEMPOTENCE_CONFIG
를 True로 준다. - 프로듀서가 SID, PID를 같이 보낸다.
- 그러나 주의를 해야된다.
- 멱등성 프로듀서는 동일한 세션에 정확히 한번 전달을 보장
- 세션이 비정상적으로 끝나면 PID가 달라지기 때문에 메시지를 새로운 것으로 인식
- retries의 기본값은 Intger.MAX_VALUE로 설정, acks는 all로 설정. 즉 부하가 좀 있음
트랜잭션 프로듀서의 동작
- 트랜잭션은 다수의 파티션에 데이터를 저장할 때, 모든 데이터에 대해 동일한 원자성을 만족시키기 위해 사용
- 쌓여도 컨슈머가 가져가지 않다고, 프로듀서가 커밋을 한 이후에 한번에 컨슈머가 처리하게 된다.
- 프로듀서별로 고유한 ID 값을 사용해야한다.
- begin과 commit 사이에 send를 여러 번 사용한다.
- 트랜잭션 컨슈머는 커밋이 완료된 레코들만 읽기위해
isolation.level
을read_comiited
로 설정