카프카(Kafka) 브로커 컨픽(Broker Configs) "auto.create.topics.enable" 실습하기

카프카 Broker Configuration 파라미터 중 카프카 서버에 토픽을 자동 생성해 주는 auto.create.topics.enable 에 대해 알아보겠습니다.

  • Zookeeper와 Kafka 서버를 시작하고 토픽을 확인합니다. 
kafka-topics.sh --list 명령어로 토픽들 리스트하기
  • kafka-console-producer 쉘을 사용해서 생성하지 않은 test1이란 토픽에 메세지를 보내고, kafka-console-consumer 쉘을 사용해서 생성하지 않은 test2란 토픽으로부터 메세지를 받아봅니다. 그리고 다시 --list 옵션으로 토픽들을 리스트합니다. 
* 토픽이 자동 생성되는 이유는 auto.create.topics.enable이란 broker configuration의 디폴트 값이 true이기 때문입니다. 카프카 서버를 시작할 때 로그를 보시면 확인하실 수 있습니다.
카프카 서버 로그에 auto.create.topic.enable=true 확인
  • 카프카 config 폴더 안의 server.properties 파일을 열고 auto.create.topics.enable=false 를 추가합니다. 
카프카 server.properties 파일에 auto.create.topics.enable 파라미터를 false로 추가하기
  • 카프카 서버를 재기동하고 서버 로그에 auto.create.topics.enable 의 값이 변경되었는지 확인합니다.
카프카 서버 로그에서 카프카 컨픽이 auto.create.topics.enable=false인 것을 확인
  • 프로듀서 쉘과 컨수머 쉘을 사용해서 test11이란 토픽에 메세지를 보내고 test22이란 토픽의 메세지를 받아봅니다. 
카프카에 해당 토픽이 없을 때 뜨는 UNKNOWN_TOPIC_OR_PARTITION 에러

consumer에서 없는 토픽에서 메세지를 가지고오려 할 때 뜨는 UNKNOWN_TOPIC_OR_PARTITION 에러
* UNKNOWN_TOPIC이란 에러를 확인합니다. auto.create.topics.enable을 false로 변경했기 때문에 토픽이 자동 생성되지 않아서 메세지를 보낼 수도 받을 수도 없습니다.
  • 다시 한 번 토픽을 확인합니다. test11과 test22 토픽이 없는 것을 알 수 있습니다.
* 실제 production 환경에서는 auto.create.topics.enable=false 로 많이 사용합니다. 그리고 producer와 consumer에서 토픽 오타로 인해 사용자도 모르게 생겨나는 토픽을 방지할 수 있습니다.
  • --create 옵션을 사용해서 test11 과 test22 토픽을 생성하고 다시 한 번 메세지를 보내고 받기를 시도해서 확인합니다. 이번엔 토픽이 존재하기 때문에 에러가 뜨지 않습니다.
kafka-topics.sh의 --create 옵션으로 토픽 생성

Comments