5.4. 신뢰성 보장

idempotence는 정확히 한 번 단일 파티션에 쓰는 데 유용합니다. 멱등과 함께 사용할 경우 트랜잭션은 정확히 한 번 여러 파티션에 쓸 수 있습니다.

트랜잭션은 동일한 트랜잭션 ID를 사용하는 메시지가 한 번 생성되도록 보장하며, 모두 각 로그에 성공적으로 기록되거나 그 중 어느 것도 아닙니다.

# ...
enable.idempotence=true
max.in.flight.requests.per.connection=5
acks=all
retries=2147483647
transactional.id=UNIQUE-ID 1
transaction.timeout.ms=900000 2
# ...
1
고유한 트랜잭션 ID를 지정합니다.
2
시간 초과 오류가 반환되기 전에 트랜잭션에 허용되는 최대 시간을 밀리초 단위로 설정합니다. 기본값은 900000 또는 15분입니다.

transactional.id 의 선택 사항은 트랜잭션 보장이 유지되기 위해서는 중요합니다. 각 트랜잭션 ID는 고유한 주제 파티션 세트에 사용해야 합니다. 예를 들어 파티션 이름에서 트랜잭션 ID에 대한 주제 파티션 이름의 외부 매핑을 사용하거나 충돌을 방지하는 함수를 사용하는 주제 파티션 이름에서 트랜잭션 ID를 계산하여 수행할 수 있습니다.