[mac] Apache Kafka quickstart

ssongkim·2021년 9월 9일
0


공식문서 https://kafka.apache.org/quickstart 를 보고 mac 로컬환경에 카프카를 설치하고 producer, consumer를 테스트 해봅니다.

kafka 다운로드

https://kafka.apache.org/downloads 에 들어가서 kafka를 다운로드 합니다.

저는 kafka_2.13-3.4.0.tgz를 다운로드 받았습니다.

혹은 curl로 다운로드 받을 수 있습니다.

curl -o kafka_2.13-3.4.0.tgz https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.4.0.tgz

그 다음 적절한 위치에 압축을 해제해줍니다.

zookeeper 실행

kafka 클러스터를 관리해주는 zookeeper 서버를 먼저 실행해주어야 합니다.

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

kafka broker 서버 실행

이제 새로운 터미널을 열어주고 해당 터미널에 kafka 서버도 실행해줍니다.

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

Connection to node 0 (/ip:9092) could not be established. Broker may not be available 라는 에러가 뜨며 kafka 서버 실행이 제대로 되지 않을 경우 config/server.properties부분에 listeners부분의 주석을 해제하고 아래와 같이 PLAINTEXT://:9092를 PLAINTEXT://localhost:9092로 수정합니다.(https://stackoverflow.com/questions/46158296/kafka-broker-not-available-at-starting/47619310)

이벤트 저장을 위한 kafka topic 생성

토픽 생성

$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

모든 Kafka 명령줄 도구에는 추가 옵션이 있습니다. 인수 없이 kafka-topics.sh 명령을 실행하여 사용 정보를 표시합니다. 예를 들어 새 주제의 파티션 수와 같은 세부 정보도 표시할 수 있습니다.

$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092

옵션보기

  • --create : 새로운 토픽을 생성한다.
  • --bootstrap-server : 연결할 카프카 서버를 지정한다. (기존에는 --zookeeper 옵션으로 주키퍼 서버를 지정했으나 현재는 Deprecated 되었다.)
  • --replication-factor : 생성되는 토픽의 각 파티션의 Replication factor를 지정한다.
  • --partitions : 생성되는 토픽의 파티션 수를 지정한다.
  • --topic : 생성하려는 토픽의 이름을 지정한다.

토픽이 제대로 생성됐는지 토픽 리스트 확인

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

topic에 메시지 발행하기

새로운 터미널을 열고 아래 명령어를 입력해 producer 클라이언트를 실행합니다.
Kafka 클라이언트는 이벤트 쓰기(또는 읽기)를 위해 네트워크를 통해 Kafka 브로커와 통신합니다.

$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

topic으로부터 메시지 읽기

다른 터미널 세션을 열고 콘솔 consumer 클라이언트를 실행하여 방금 생성한 이벤트를 읽습니다.

$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

이벤트는 Kafka에 영구적으로 저장되기 때문에 원하는 만큼 많은 소비자가 이벤트를 읽을 수 있습니다. 또 다른 터미널 세션을 열고 이전 명령을 다시 실행하여 이를 쉽게 확인할 수 있습니다.

카프카 종료하기

producer, consumer, kafka, zookeeper 순으로 ctrl + c를 눌러 터미널 종료!
도중에 생성한 이벤트를 포함하여 로컬 Kafka 환경의 데이터도 삭제하려면 다음 명령을 실행합니다.

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

응용하기

지금은 producer, consumer 클라이언트를 터미널에서 테스트했지만 이를 spring, flask 등에서 테스트해보자

profile
鈍筆勝聰✍️

0개의 댓글