공식문서 https://kafka.apache.org/quickstart 를 보고 mac 로컬환경에 카프카를 설치하고 producer, consumer를 테스트 해봅니다.
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
그 다음 적절한 위치에 압축을 해제해줍니다.
kafka 클러스터를 관리해주는 zookeeper 서버를 먼저 실행해주어야 합니다.
$ bin/zookeeper-server-start.sh config/zookeeper.properties
이제 새로운 터미널을 열어주고 해당 터미널에 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)
$ 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
$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
새로운 터미널을 열고 아래 명령어를 입력해 producer 클라이언트를 실행합니다.
Kafka 클라이언트는 이벤트 쓰기(또는 읽기)를 위해 네트워크를 통해 Kafka 브로커와 통신합니다.
$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
다른 터미널 세션을 열고 콘솔 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 등에서 테스트해보자