CS/Apache Kafka

Kafka 초기 설정 방법 - (Topic 생성 및 확인, Producer/Consumer 설정)

JWonK 2023. 5. 8. 21:12
728x90
반응형
  • Zookeeper / Kafka / Producer - Consumer
  • 총 4개의 shell이 필요

4개의 terminal 실행

 

 

실행 순서는

  1. Zookeeper 실행
  2. Kafka 실행
  3. Producer Message 발행
  4. Consumer Message 수신

 


① Zookeeper 실행

- Kafka 파일이 있는 곳으로 이동하여 아래와 같은 명령어를 통해 실행

./bin/zookeeper-server-start.sh ./config/zookeeper.properties

 

 

→ port가 0.0.0.0:2181로 실행된 것을 확인할 수 있다.

 

 

 

 

 

 

② Kafka Server 실행

- Kafka 파일이 있는 곳으로 이동하여 아래와 같은 명령어를 통해 실행

./bin/kafka-server-start.sh ./config/server.properties

→ port가 0.0.0.0:9092로 실행된 것을 확인할 수 있다.

 

 

 

 

 

 

③ Kafka Topics 확인 및 생성

- 아래와 같은 명령어를 통해 확인할 수 있다.

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

 

아직 생성하지 않았기 때문에 Topic 생성 명령어를 통해 생성해준다.

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic exqress-service --partitions 1

내가 진행하고자 하는 프로젝트의 이름 [exqress-service]라는 이름으로 생성해주었다.

 

 

※ 근데 Topic 생성하는 데에 TimeOut 오류가 발생하였다.

 

https://wildeveloperetrain.tistory.com/219

 

Kafka TimeoutException 해결 방법 org.apache.kafka.common.errors.TimeoutException: Call(callName=listTopics ...)

kafka 서버 기동을 위해 'zookeeper 서버 기동' -> 'kafka 서버 기동' -> 'kafka 서버에 요청'을 하는 중 'TimeoutException'이 발생하여 해결한 내용입니다. (사용된 kafka 버전은 kafka_2.13-2.7.0 버전입니다.) Zookeeper

wildeveloperetrain.tistory.com

여기서 참고한 방법을 바탕으로 오류를 해결하였다. 

 

 

  1) kafka 서버를 기동 할 때 사용되는 server.properties 에 아래와 같은 설정 파일을 우선 추가해준 후

//kafka_2.13-2.7.0 > config > server.properties file

listeners=PLAINTEXT://localhost:9092

 

  2) 다시 서버를 실행하면 아마 안되는 경우가 있을 것이다. 그럴 때는 Kafka 서버로 열렸던 포트 9092번을 모두 닫아주면 된다. 포트를 닫아주는 방법은

lsof -i :9092 // 9092번 포트로 열렸던 PID 값 모두 확인하기
kill -9 {PID} // 위에서 확인한 PID 값 모두 죽이기

 

위 방법들을 진행해준 후 다시 실행시켜주니 잘 동작하였고 다시 Topic을 생성해주니

위와 같이 확인할 수 있었다.

 

Topic을 확인하는 명령어는

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic exqress-service

 

 

 

 

 

 

④ Message Producer 생성하기

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic exqress-service

위에서 생성한 [exqress-service]라는 topic에 producer로 설정해주는 명령문이다.

 

> 옆에 메세지를 입력할 수 있는 칸이 생성된다.

 

 

 

 

 

⑤ Message Consumer 생성하기

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic exqress-servi
ce --from-beginning

메세지를 수신받기 위한 consumer를 설정하는 방법이다. 위에서 만든 exqress-service topic으로부터 수신 받고자 한다.

 

 

 

 

 

⑥ 동작과정

- Producer 측에서 메세지를 입력하고 송신하면

 

- 동시에 아래와 같이 메세지가 수신하게 된다.

 

 

Consumer가 2개 이상이어도 동일하게 동작할 수 있다.

728x90
반응형