작성
·
882
0
답변 1
1
김대호님 답변드립니다.
1) test 토픽이 RF=1, min.insync.replicas=2 가 에러가 아닌 이유
min.insync.replicas는 acks=all(-1)옵션인 프로듀서가 해당 토픽에 레코드를 전송할 때 체크하는 최소 복제 단위 옵션이기 때문에 생성 자체로는 에러가 나지 않습니다. 그렇기 때문에 프로듀서가 acks=all(-1)로 해당 토픽에 전송시에 에러가 나는 모습을 보실 수 있습니다.
$ bin/kafka-console-producer.sh --bootstrap-server my-kafka:9092 --topic test --request-required-acks -1
>a
[2022-07-24 12:40:13,377] WARN [Producer clientId=console-producer] Got error produce response with correlation id 12 on topic-partition test-0, retrying (2 attempts left). Error: NOT_ENOUGH_REPLICAS (org.apache.kafka.clients.producer.internals.Sender)
[2022-07-24 12:40:13,493] WARN [Producer clientId=console-producer] Got error produce response with correlation id 13 on topic-partition test-0, retrying (1 attempts left). Error: NOT_ENOUGH_REPLICAS (org.apache.kafka.clients.producer.internals.Sender)
[2022-07-24 12:40:13,597] WARN [Producer clientId=console-producer] Got error produce response with correlation id 14 on topic-partition test-0, retrying (0 attempts left). Error: NOT_ENOUGH_REPLICAS (org.apache.kafka.clients.producer.internals.Sender)
[2022-07-24 12:40:13,702] ERROR Error when sending message to topic test with key: null, value: 0 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.NotEnoughReplicasException: Messages are rejected since there are fewer in-sync replicas than required.
2) 컨슈머는 min.insync.replicas=2 옵션을 충족하지 못하는 워터마크 때문에 토픽에서 데이터를 못가져 오는 것인가?
기본적으로 default 옵션일 경우 컨슈머는 min.insync.replicas 기준으로 레코드를 가져오는 것이 아니라 리더 파티션에 존재하는 레코드를 기준으로 컨슘을 진행합니다.
(이 부분은 강의 수정하였습니다.)