본문 바로가기

카프카

카프카 프로듀서와 컨슈머 docker shell 에서 테스트하기

이전 글에서 docker compose로 카프카 클러스터를 구축했습니다.

이전 글을 보고오지 않으신 분은 아래의 링크로 보고 오시기 바랍니다.

https://ksb-dev.tistory.com/261

 

카프카 클러스터 docker compose로 구축하기

1. 왜 docker compose를 사용하는가? docker compose는 여러 개의 컨테이너가 동시에 동작할 때 필요합니다. 위 그림과 같이 카프카 클러스터를 구축할 때 보통 한 개의 주키퍼, 세 개의 카프카 브로커가

ksb-dev.tistory.com

 

docker compose로 카프카 클러스터를 실행 시키면 다음과 같이

한 개의 주키퍼, 세 개의 카프카 브로커가 동작되고 있는 것을 볼 수 있습니다.

이 상태에서 카프카가 기본으로 제공하는 프로듀서와 컨슈머 테스트 방법을 한번 해 보도록 하겠습니다.

 

1. 프로듀서 테스트

프로듀서는 데이터를 삽입하는 주체입니다.

kafka1 컨테이너에 접근해서 데이터를 넣어보도록 하겠습니다.

컨테이너에 접근하려면 CONTAINER ID가 필요합니다.

각 컨테이너의 CONTAINER ID는 docker ps를 통해 알 수 있습니다.

 

세 개의 카프카 브로커 중 kafka1의 CONTAINER ID는 589ccb968299입니다.

이 CONTAINER ID를 통해 kafka1 shell에 접근할 수 있습니다.

명령어는 아래와 같습니다.

docker exec -it 'CONTAINER ID' sh

# 예시
docker exec -it 589ccb968299 sh

 

쉘에 접근 완료되었으면 토픽을 만들어야 합니다.

ksb-dev라는 이름의 토픽을 만들어보겠습니다.

토픽을 만드는 명령어는 아래와 같습니다.

kafka-topics --create --bootstrap-server localhost:29092 --replication-factor 3 --partitions 3  --topic '토픽 이름'

# 예시
kafka-topics --create --bootstrap-server localhost:29092 --replication-factor 3 --partitions 3 --topic ksb-dev

💡 명령어에 적힌 localhost:29092는 kafka1의 주소입니다. 만약 오류가 나시는 분들은 kafka1에 접근한게 맞는지 확인해 보시기 바랍니다.

 

Created topic ksb-dev가 나오면 정상적으로 토픽이 만들어진 것입니다.

만들어진 토픽을 확인해 보겠습니다.

만들어진 토픽을 보는 명령어는 아래와 같습니다.

kafka-topics --list --bootstrap-server '카프카 주소'

# 예시
kafka-topics --list --bootstrap-server localhost:29092

 

만들어진 토픽에 데이터를 삽입해 보도록 하겠습니다.

명령어는 아래와 같습니다.

kafka-console-producer --broker-list '카프카 주소' --topic '토픽 이름'

# 예시
kafka-console-producer --broker-list localhost:29092 --topic ksb-dev

 

이제 데이터를 삽입하면 됩니다.

 

2. 컨슈머 테스트

컨슈머는 데이터를 소비하는 주체입니다.

컨슈머를 통해 데이터를 소비해 보도록 하겠습니다.

 

마찬가지로 컨테이너에 접근해야 합니다.

 

이번에는 kafka3의 쉘에 접근해 보도록 하겠습니다.

kafka3의 CONTAINER ID는 9c8882fd4a00입니다.

docker exec -it 'CONTAINER ID' sh

# 예시
docker exec -it 9c8882fd4a00 sh

 

데이터를 소모하는 컨슈머의 명령어는 아래와 같습니다.

kafka-console-consumer --bootstrap-server '카프카 주소' --topic '소비할 토픽 이름' --group '컨슈머 그룹' --from-beginning

# 예시
kafka-console-consumer --bootstrap-server localhost:29094 --topic ksb-dev --group ksb-consumer-group-test --from-beginning

💡 kafka3의 주소는 localhost:29094 입니다.

 

위 그림과 같이 프로듀서를 통해 삽입된 데이터를 컨슈머가 소비하는 모습을 볼 수 있습니다.

컨슈머 그룹은 데이터를 소비하는 묶음입니다.

컨슈머 그룹의 자세한 설명은 아래 동영상의 7분 24초 부터 보시면 알 수 있습니다.

https://www.youtube.com/watch?v=rBVCvv9skT4

 

- 프로듀서 삽입 gif

- 컨슈머 소비 gif