BackEnd Developer, Love Crossfit, Welcome to Jay's blog

Kafka - 로컬 환경에서 띄우기

|


카프카 서버를 로컬환경에서 띄어보고 프로듀서를 통해 카프카로 메시지를 보내고 그 메시지를 컨슈머가 읽어오도록 콘솔에서 진행해보자.

카프카 다운로드

https://kafka.apache.org/downloads

스크립트 파일로 서버 시작

// 주키퍼 서버 실행
./bin/zookeeper-server-start.sh ./config/zookeeper.properties

// 카프카 서버 실행
./bin/kafka-server-start.sh ./config/server.properties

각각 실행되는 서버의 기본 포트는 주키퍼 2181, 카프카 9092이다.

주키퍼 서버는 카프카 클러스터링을 관리해주기 때문에 주키퍼 서버를 먼저 실행시켜줘야 한다. 하지만, 여기서는 클러스터링 구조로 생성하지 않고 카프카 서버 1대만 띄어 진행할 것이다.

위에서 카프카 서버 실행 명령어를 1번 수행하면 카프카 서버 1대가 떠지고, N번 수행하면 카프카 서버 N대가 떠진다.

토픽 생성

이제 콘솔에서 토픽을 생성해보자

// 토픽 생성
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 -partitions 3 --topic event.purchase

여기서는 서버 한대만 띄어서 할거니까 replication-factor가 1이고 파티션 3개를 생성해보았다. 토픽의 이름은 event.purchase이다.

// 토픽에 대한 정보 조회
./bin/kafka-topics.sh --describe --topic event.purchase --zookeeper localhost:2181

alt text

토픽에 대한 정보를 조회해보면 0번 서버에 파티션 0,1,2가 들어있고 Replicas는 0개임을 알 수 있다.

// 토픽 리스트 조회
./bin/kafka-topics.sh --list --zookeeper localhost:2181

메시지 전송하고 받기

이제 producer를 통해 카프카로 메시지를 보내고, consumer에서 메시지를 받아 출력해보자.

카프카 브로커 서버의 기본 포트는 9092번이다. event.purchase 토픽을 향해 메시지를 전송하였다.

  // 카프카로 메시지 보내기
  bin/kafka-console-producer.sh --broker-list localhost:9092 --topic event.purchase
  // 카프카로 메시지 받기
  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic event.purchase --from-beginning

alt text

–from-beginning은 토픽에 있는 메시지를 첫번째 오프셋부터 모두 읽어오게 하는 옵션이다. 아무것도 안주고 시작하면 default로 마지막 로그부터 읽어온다.

여기서 컨슈머가 하는 일을 카프카에서 메시지를 읽어와 콘솔에 출력해주는 일이다.

실제에서는, 컨슘해서 디비에 기록하거나 푸시를 보내거나 이메일 발송을 한다거나 등의 다른 작업을 수행할 수 있다.

카프카 종료하기

  1. 지금까지 진행했던 것 역순으로 종료한다. 먼저 Producer와 Consumer를 종료시킨다. Ctrl-C 이용
  2. kafka broker 종료
  3. zookeeper 종료
bin/kafka-server-stop.sh // 카프카 종료

bin/zookeeper-server-stop.sh // 주키퍼 종료

event.purchase 토픽에 전송한 메시지는 주키퍼와 카프카가 종료되더라도 재 시작시 남아있게 된다. 카프카 종료와 함께 저장된 이벤트들도 함께 제고하고 싶다면 아래 명령어를 입력해 제거해준다

rm -rf /tmp/kafka-logs /tmp/zookeeper