토픽생성
$ kafka-topics --create --topic topic3 --bootstrap-server kafka:9092 --partitions 3 --replication-factor 1
토픽 Listen (컨슈머 그룹명 : created-products)
$ kafka-console-consumer --bootstrap-server localhost:9092 --topic topic3 --group created-products
컨슈머 그룹 리스트 확인 (새로운 터미널 창에서)
$ kafka-consumer-groups --bootstrap-server localhost:9092 --list
created-products
컨슈머들 상태 확인 (--describe
)
$ kafka-consumer-groups --bootstrap-server localhost:9092 --describe --group created-products
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID
... 결과값은 캡처로 대체함 (가독성이 떨어져서)
콘솔 프로듀서 구동
$ kafka-console-producer --bootstrap-server localhost:9092 --producer-property partitioner.class=org.apache.kafka.clients.producer.RoundRobinPartitioner --topic topic3
데이터 입력
>10
>11
>12
>13
>1111
>111111
>11111
>1
>1
>1
>1
>1
>1
>1
>
>1
>1
>
>1
>1
>1
>1
>1
>1
>1
>1
>
>1
>1
>
LAG 이 늘어나는 상황 확인해보기
- partition 은 3개인데 consumer 는 1개 구동 중인 상황
- 프로듀서에서 넣어주는 데이터의 양이 컨슈머에서 읽어들이는 데이터의 양보다 많을 경우 LAG 값이 커지는 현상 확인
$ kafka-consumer-groups --bootstrap-server localhost:9092 --describe --group created-products
데이터의 소비를 모두 하지 못한 상황에서는 LAG 항목에 1 이상의 값이 나타나게 됩니다.
컨슈머가 데이터를 모두 소모하고 나면 LAG 은 다시 0 으로 돌아옵니다.
Offset
- Log-End-Offset (LEO) : Partition 데이터의 끝을 의미합니다. (생성되는 데이터의 가장 최신데이터)
- Current Offset : Consumer 가 어디까지 메시지를 읽었는지를 의미합니다.
- Commit Offset : Consumer 가 어디까지 커밋을 했는지를 의미합니다. Consumer 에서 offset 을 처리했다는 Offset Commit 을 요청하면 업데이트 됩니다.
LAG 란?
- LEO 와 Current Offset 의 차이를 의미합니다.
- LAG 값이 0 보다 크다는 것은 그 만큼 컨슈머가 처리를 못했다는 의미입니다.