DevOps/Kafka

[카프카 프로그래밍] kafka-console-producer.sh, kafka-console-consumer.sh

키깡 2024. 7. 1.
728x90

kafka-console-producer.sh 용도

토픽에 데이터 넣기용

key.separator

  • 선언해야 레코드키 전송
  • 메시지 키가 동일한 경우에는 동일한 파티션
  • null인 경우는 라운드로빈
  • bin/kafka-console-producer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka
    • 명령어 치면 꺽쇠나옴

따로 이렇게 parse key 안주면 메시지 값은 hello 로 설정되지만 메시지 키는 null이고 라운드로빈으로 설정되는것임.

  • bin/kafka-console-producer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --property "parse.key=true" --property "key.separator=:"
  • k1에 대해서는 동일한 파티션에 들어가는 것임.

  • 메시지키가 동일하면 암!튼! 동일한 파티션

kafka-console-consumer.sh 용도

토픽으로 전송한 데이터 확인

  • 필수옵션이 카프카 클러스터 정보(부트스트랩 서버), 토픽이름, from-beginning 옵션(토픽에 저장된 처음 데이터부터 출력
  • 메시지 키와 메시지값을 확인하고 싶으면 --property 옵션 사용
  • --max-messages 옵션으로 최대 컨슘 메시지 개수 설정 가능
  • --partition 옵션으로 특정 파티션만 컨슘 가능
  • --group 옵션으로 컨슈머 그룹 기반으로 동작. 어느 레코드까지 읽었는지에 대한 데이터가 카프카 브로커에 저장.
    • 컨슈머 그룹이란 특정 목적을 가진 컨슈머들을 묶음으로 사용하는 것.
  • bin/kafka-console-consumer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --from-beginning
  • bin/kafka-console-consumer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --from-beginning --property print.key=true --property key.separator="-"
    = 처음부터 읽는데 키도 같이 프린트해줘.

  • bin kafka-console-consumer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --from-beginning --max-messages 1

= 가장 처음 간게 출력

  • bin/kafka-console-consumer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --from-beginning --partition 0

  • bin/kafka-console-consumer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --from-beginning --partition 1

  • bin/kafka-console-consumer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --from-beginning --group hello-group

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

  • 테스트용 토픽 하나 생성
    • bin/kafka-topics.sh --create --bootstrap-server my_kafka:9092 --topic test
  • 두 창을 띄워서
  • bin/kafka-console-producer.sh --bootstrap-server my_kafka:9092 --topic test
  • bin/kafka-console-consumer.sh --bootstrap-server my_kafka:9092 --topic test

해보면

: 실시간으로 produce & consume 보기 가능

 

댓글