
Spring Boot를 이용해서 Kafka를 이용한 서비스를 만들어볼 예정이다. 우선 Kafka 설치 및 구동이 필요하다.
자바 설치 및 Path 설정이 필요하다. 나는 최신 버전 중 stable한 것으로 설치해놓았다.
javac 17.0.12

Apache Kafka 공식홈페이지에서 위와 같은 Binary 파일을 다운받는다. 나는 Scala 2.13 버전을 다운받았다. 압축해제한 파일을 본인이 사용하기 편한 경로에 위치시킨다. 나는 C드라이브 안의 work폴더 안에 놓았다.
C:\work\kafka_2.13-3.7.1
자바 Path 설정해준 것과 동일하게 Kafka도 해준다. 제어판>시스템 및 보안>시스템>고급시스템 설정에서 우선 변수이름을 KAFKA_HOME, 변수 값은 Kafka파일이 위치해있는 위치를 그대로 복사해 아래처럼 저장해준다.

Path에도 위에서 설정해 준 KAFKA_HOME 변수를 이용해 bin 파일이 위치해있는 위치를 등록해준다. 이제 운영체제 어디에서든지 Kafka 명령어를 사용할 수 있게 되었다.

다음으로는 Kafka의 configuration을 설정하는 파일에 임시경로로 되어있는 부분을 실제 kafka가 설치된 경로로 업데이트 해줘야 한다. 업데이트해줄 파일은 아래 이미지에서 볼 수 있듯이 server파일과 zookeeper파일이다. 이를 에디터 프로그램으로 열어준다.

두 파일들의 log.dirs와 dataDir가 처음에는 각각 /tmp/kafka-logs 및 /tmp/zookeeper로 되어있을 것이다. 이 부분을 실제 카프카가 설치된 경로로 아래와 같이 변경하고 저장해준다.
log.dirs=/tmp/kafka-logs ------> log.dirs=C:\work\kafka_2.13-3.7.1\kafka-logs
dataDir=/tmp/zookeeper ------> dataDir=C:\work\kafka_2.13-3.7.1\zookeeper

분산 애플리케이션 관리를 위한 코디네이터인 Zookeeper를 먼저 실행해야 한다. 아래처럼 Kafka 폴더 경로(C:\work\kafka_2.13-3.7.1)에서 우클릭으로 터미널에서 열기를 선택한 뒤, 아래 명령어를 친다. 윈도우의 경우 꼭 windows 안에 있는 실행파일을 실행하도록 하자.
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

어쩌구저쩌구 메시지들과 함께 Zookeeper 글자가 확인되면 잘 실행된 것이다.

Producer로 부터 받은 메시지(이벤트) 을 저장하고 관리하는 역할을 수행하는 브로커(=카프카)를 실행한다. 앞서 4번의 Zookeeper가 실행되어있는 상태여야 한다.
.\bin\windows\kafka-server-start.bat .\config\server.properties
새 커맨드창을 실행(필요 시 관리자 모드로)하여 위 커맨드라인을 입력하면 아래와 같이 ZookeeperClient가 연결되었다는 둥, Kafka의 설정 등 블라블라 많은 로그가 나온다.

새 커맨드창을 띄워(필요 시 관리자 모드로) JPS명령어를 통해 Kafka 데몬이 정상적으로 실행 중인지 확인해본다.

JVM을 기반으로 하는 프로세스 중 Kafka가 정상적으로 떠 있음을 확인할 수 있었다.
Kafka 클라이언트 서버의 기본 포트는 9092이다. 참고로 Kafka 관련 서비스들이 사용하는 기본 포트는 아래와 같다. (Confluent 문서 참고)

다시 새 커맨드창을 띄우고 example-topics라는 이름의 토픽을 생성해본다. 아래와 같은 명령어를 치면 해당 토픽이 생성되었다는 메시지가 뜬다.
.\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --topic example-topics

토픽 리스트 조회 명령어는 아래와 같다.
.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --list
다음으로 아래와 같이 카프카 프로듀서를 통해 해당 토픽 내 메시지/이벤트(first message, second message...)를 만들어본다.
.\bin\windows\kafka-console-producer.bat --topic example-topics --bootstrap-server localhost:9092

컨슈머 클라이언트 실행을 위해 또 다시 새 커맨드 창을 띄우고 example-topics라는 토픽 내에 들어있는 이벤트를 꺼내보자.
.\bin\windows\kafka-console-consumer.bat --topic example-topics --from-beginning --bootstrap-se
rver localhost:9092

실시간으로 Producer(왼쪽)와 Consumer(오른쪽) 커맨드창을 동시에 보면 아래 gif 파일처럼 메시지 전달을 더 용이하게 확인할 수 있다.

카프카 환경을 종료하려면 아래 스텝을 따른다.
Ctrl+C로 컨슈머와 프로듀서 클라이언트를 종료한다.Ctrl+C로 카프카를 종료한다.Ctrl+C로 Zookeeper를 종료한다.