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.levelread_comiited로 설정