1. 서론
이번 포스팅에서는 CLI를 통해 간단한 사용 예제를 포스팅하려고 합니다.
예제로는 아래와 같습니다.
- 토픽 생성
- 토픽 리스트 조회
- 토픽 상세 조회
- message pub
- message sub
- 컨슈머 그룹의 offset/lag 정보 확인
2. 사용 예제
2-1 토픽 생성
- 명령어 경로 = 카프카 설치 에서 진행한 ~/apps/confluent-5.4.0/bin 디렉토리에 있습니다.
- 아래는 replication이 2이고, partition 갯수는 3개인 test_topic을 생성하는 명령어 입니다.
- --bootstrap-server 에는 각 브로커 서버의 hostname과 port를 ',' 구분자로 적어주시면 됩니다.
- 저의 경우 브로커 3대를 기입하였습니다.
- 브로커의 default port는 9092 입니다.
kafka-topics --create --bootstrap-server broker-1:9092,broker-2:9092,broker-3:9092 --replication-factor 2 --partitions 3 --topic test_topic
2-2 토픽 조회
토픽을 생성하였으니 잘 생성되었는지 확인이 필요합니다.
이런 경우, 아래와 같이 토픽 리스트 조회 명령어를 수행하면 됩니다.
kafka-topics --list --bootstrap-server --bootstrap-server broker-1:9092,broker-2:9092,broker-3:9092
아래와 같이 test_topic을 확인할 수 있습니다.
2-3. 토픽 상세 조회
토픽 조회에서는 단순히 카프카에 있는 토픽명만을 리스트로 보여주게 됩니다.
토픽의 상세 내용을 조회하고 싶은 경우는 아래 명령어를 통해 확인할 수 있습니다.
kafka-topics --describe --bootstrap-server broker-1:9092,broker-2:9092,broker-3:9092 --topic test_topic
결과로는 아래 정보들을 확인할 수 있습니다.
- partition 갯수
- replication 수
- reader broker id
- isr
2-4. message pub
토픽을 생성하였으니, 이번엔 해당 토픽에 메시지를 pub 하겠습니다.
명령어는 아래와 같습니다.
kafka-console-producer --broker-list broker-1:9092,broker-2:9092,broker-3:9092 --topic test_topic
CLI의 경우 enter 기반으로 메시지를 구분합니다.
저는 아래와 같이 [hi, my name is, young!!] 이라는 3개의 메시지를 pub하였습니다.
2-5. message sub
이번에는 pub한 메시지를 sub을 해보겠습니다.
sub을 하기 위해서는 consumer를 통해 수행됩니다.
아래는 sub하는 명령어 입니다.
kafka-console-consumer --bootstrap-server broker-1:9092,broker-2:9092,broker-3:9092 --topic test_topic --group test_consumer_group --from-beginning
명령어를 보시면 --group을 하는 것을 볼 수 있습니다.
이것은 카프카란? 에서 설명드린것과 같이 consumer는 consumer group이 있어야 하기 때문입니다.
- 저의 test_consumer_group 이란 consumer group을 가진 consumer를 통하여 sub을 하였습니다.
아래는 sub한 결과 사진입니다.
[hi, my name is, young!!] 순서대로 pub했지만 sub은 순서대로되지 않은것을 확인할 수 있습니다.
이는 topic의 partition 갯수가 1이 아니기 때문입니다.
- 카프카에서는 메시지의 pub 순서를 보장하기 위해서는 파티션 갯수가 1이 아닌이상 보장이 되지 않습니다.
아래 사진의 latest Offset을 보시면 3개의 메시지들이 3개의 파티션에 각각 들어간것을 볼 수 있습니다.
따라서, consumer는 각 파티션의 메시지를 sub하였고, 위와 같이 순서가 보장되지 않은 결과를 볼 수 있습니다.
2-6. 컨슈머 그룹의 offset/lag 정보 확인
이번엔 특정 컨슈머 그룹의 offset/lag 정보를 확인하는 명령어 입니다.
명령어는 아래와 같습니다.
- --group에 확인하고 싶은 consumer group을 기입합니다.(저의 경우 위에서 sub한 test_consumer_group을 지정하였습니다.)
kafka-consumer-groups --bootstrap-server broker-1:9092,broker-2:9092,broker-3:9092 --group test_consumer_group --describe
아래는 결과 사진입니다.
- 위에서 테스트한 test_topic의 결과를 볼 수 있습니다.
- pub 메시지를 모두 sub하였으니 각 파티션의 lag는 0입니다.
3. 마무리
이번 포스팅에서는 간단한 CLI 기반의 카프카 사용예제를 진행하였습니다.
다음 포스팅에서는 카프카 사용시 도움되는 Tool들에 대해 소개하도록 하겠습니다.
'MQ > Kafka' 카테고리의 다른 글
(6) spring kafka + schema registry + gradle plugin 적용 (4) | 2020.10.22 |
---|---|
(5) 카프카 사용 시 고려사항 (0) | 2020.02.26 |
(4) 카프카 매니저 & 스키마 레지스트리 (0) | 2020.02.26 |
(2) 카프카 설치 (0) | 2020.02.25 |
(1) 카프카란? (2) | 2020.02.25 |