티스토리 뷰
#개요
이번 시간에는 Apache Kafka에서 Topic을 생성하고, 해당 토픽을 통해서 Producer와 Consumer의 역할을 알아보려 합니다. 가장 기본적인 내용이지만, 가장 중요한 내용이기도 해서 최대한 열심히 정리해보겠습니다.
#Kafka 커맨드 정리
토픽 생성을 위한 커맨드를 미리 정리하고 실습을 진행하겠습니다. 해당 커맨드는 정리용이니 참고만 해주세요.
📄 Zookeeper 및 Kafka 서버 구동
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
$KAFKA_HOME 항목은 현재 KAFKA폴더의 위치입니다. zookeeper와 kafka server를 구동하는 커맨드 입니다.
Kafka는 Zookeeper 서버를 기반으로 동작되기 때문에 반드시 두개 다 실행을 시켜주세요.
📄 Topic 생성
$KAFKA_HOME/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server loclahost:9092 \
--partitions 1
해당 커맨드를 사용해서 quickstart-events 라는 이름의 topic을 생성하려합니다. 여기서 만들어 지는 topic을 통해서, Producer와 Consumer가 메시지를 통신합니다. 여기서 partitions 옵션도 있는데 이는 후에 자세히 다뤄보겠습니다.
📄 Topic 목록 조회
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
Topic의 목록을 조회합니다.
📄 Topic 정보 조회
$KAFKA_HOME/bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Topic의 정보를 조회합니다. 해당 Command는 topic 명이 필요합니다.
#Kafka 서버 기동
먼저 해야할 작업은 $KAFKA_HOME으로 이동하는 작업입니다. 저같은 경우 D:/kaka 밑에 있기 때문에 먼저 해당 디렉토리로 이동해 줄 예정입니다.
그리고 앞서 말씀드린 Command를 입력해 보겠습니다. 다만 위에서 정리되어 있는 Cmd는 Windows기반이 아닙니다. 그래서 조금 다른 형태로 작성해야합니다. 아무래도 Kafka를 사용하는 환경이 Linux인 경우가 많기에 지금은 테스트를 하는 상황이다! 라고 생각해주시면 될 것 같습니다.
windows를 위한 bat파일은 bin/windows에 있습니다.
./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties
./bin/windows/kafka-server-start.bat ./config/server.properties
각 커맨드의 정상 실행 모습입니다.
# zookeeper-sever-start.bat
# kafka-sever-start.bat
그리고 저는 PowerShell을 이용중인데, 해당 커맨드 실행 시 헤드리스 모드가 아니기 떄문에, Shell 창이 2개가 필요합니다. 프로그램 끝나길 기다리면 안됩니다!!
#Kafka topic 생성 & Producer/Consumer 테스트
다음으로 해야하는 작업은 Topic을 생성하는 작업입니다. Shell 에서 해당 커맨드를 를 통해서 topic을 생성해줍니다.
./bin/windows/kafka-topics.bat --create --topic quickstart-events --bootstrap-server loclahost:9092 --partitions 1
총 3개의 Shell에서 Kafka와 Zookeeper가 정상 기동 중이고 하나는 토픽 생성 이후 역할이 없으니 Shell창을 한개 만 더 켜서, Producet와 Consumer를 생성해봅시다. Shell은 Windows 자체 내부 어플리케이션 입니다. 개선된 Cmd라고 생각하시면 될 것 같네요.
#Producer 실행
./bin/windows/kafka-console-producer.bat --broker-list localhost:9092 --topic quickstart-events
#Consumer 실행
./bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic quickstart-events\ --from-beginning
해당 두 커맨드를 서로 다른 Shell을 통해서 실행시키면 다음과 같은 화면이 나옵니다.
Producer에는 메시지를 생성할 수 있는 > 표시가 나오고 이때 원하는 단어를 입력해 줍니다.
저는 TEST hi Hello 라는 텍스트를 입력했습니다.
Consumer에서는 해당 메시지를 받아 옵니다.
하단에 제가 입력학 메시지가 보이시나요? 위에있는 메시지는 제가 테스트하면서 입력한거라 무시해주세요
ㅋㅋ 한글치면 쏙옙나오는거 뻘하게 웃기네요
이렇듯 Producer와 Consumer는 메시지를 보내고, 메시지를 받는 역할을 맡고 있습니다.
마지막으로 Producer는 여러개의 Consumer에 메시지를 보낼 수 있다고 했던 거 기억나시나요?
#하나의 Producer에서 두개의 Consumer에 메시지 전송
보시는 것 처럼 동시에 두개의 Consumer에 메시지를 보낼 수 도 있습니다.
마치며..
이번엔 Topic을 생성하고 Producer와 Consumer를 통해서 메시지를 전송하고 전달 받는 과정을 거쳤습니다. 이번 실습을 통해서 Producer가 어떤 역할을 하고 Consumer는 어떤 역할을 하는지 감을 잡은 것 같네요. 다음 포스팅에서는 조금 더 심화된 내용을 가지고 돌아오겠습니다.
감사합니다.
-참고한 강의-
'웹 프로그래밍 > MSA 학개론' 카테고리의 다른 글
[MSA] OrderService와 MariaDB의 연동 (0) | 2022.04.28 |
---|---|
[MSA] Apache Kafka - Kafka Connect 개념/ MariaDB설치 (0) | 2022.04.28 |
[MSA] Apache Kafka 설치 (0) | 2022.04.28 |
[MSA] Apache Kafka란? Kafka 개념 핥아먹기 (0) | 2022.04.27 |
[MSA] 잠시 쉬어가는 MSA - 데이터 동기화 문제- (0) | 2022.04.27 |
- Total
- Today
- Yesterday
- MSA
- MariaDB
- 빅-오
- producer
- docker
- Logstash 활용
- 오늘저녁 삼겹살
- Gateway
- LoadBalancer
- git
- 미래의나에게동기부여
- github
- JWT
- elasticSearch
- rabbitmq
- config
- prometheus
- Logstash to ElasticSearch
- consumer
- 운동일기
- 루틴기록
- zipkin
- Kafka Connect
- 운동
- UserService
- Feign
- ACTUATOR
- springcloud
- kafka
- Spring + ELK
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |