5.3. 주문한 전달

idempotent 생산자는 메시지가 정확히 한 번만 전달되므로 중복을 방지합니다. 실패 시에도 전송 순서를 보장하기 위해 ID 및 시퀀스 번호가 메시지에 할당됩니다. 데이터 일관성을 위해 acks=all 을 사용하는 경우, 멱등성을 사용하는 것은 순서가 지정된 전달에 적합합니다. 생산자에는 기본적으로 idempotency가 활성화됩니다. idempotency를 사용하면 메시지 순서를 보존하기 위해 동시 진행 중 요청 수를 최대 5개로 설정할 수 있습니다.

idempotency로 주문한 전달

# ...
enable.idempotence=true 1
max.in.flight.requests.per.connection=5 2
acks=all 3
retries=2147483647 4
# ...

1
idempotent 생산자를 활성화하려면 true 로 설정합니다.
2
idempotent를 사용하면 진행 중인 요청 수가 1보다 클 수 있지만 메시지 순서 지정 보장은 계속 제공됩니다. 기본값은 5 진행 중인 요청입니다.
3
acks모두 로 설정합니다.
4
실패한 메시지 요청을 다시 보내는 시도 수를 설정합니다.

acks=all 을 사용하지 않고 성능 비용 때문에 idempotency를 사용하지 않도록 선택하는 경우 진행 중(unacknowledged) 요청 수를 1로 설정하여 순서를 유지합니다. 그렇지 않으면 Message-A 가 브로커에 이미 기록된 후에만 Message- A가 성공하는 경우가 발생할 수 있습니다.

idempotency 없이 주문한 전달

# ...
enable.idempotence=false 1
max.in.flight.requests.per.connection=1 2
retries=2147483647
# ...

1
idempotent 생산자를 비활성화하려면 false 로 설정합니다.
2
진행 중인 요청 수를 정확히 1 로 설정합니다.