카프카(Kafka) 토픽 지우기 & delete.topic.enable 파라미터 사용하기

카프카(Kafka)의 토픽(topic)을 지워보고 또한 토픽 삭제를 못하도록  broker configs의 delete.topic.enable를 수정해 보겠습니다. 그리고 카프카 토픽명에 .(마침표)나 _(언더스코어) 때문에 충돌이 일어나는 실습도 하겠습니다. 사용된 카프카 버전은 2.4.1 입니다. 

* 예전에는 delete.topic.enable의 default 값이 false였는데 버전 1.0.0 이후부터 true로 변경되었습니다. (참고) KAFKA/KIP-162 
  • --list 옵션으로 토픽이 있는지 확인하고 --create 옵션으로 토픽을 몇 개 생성합니다. 생성한 토픽에 데이터를 넣으셔도 됩니다.
카프카에서 create과 list 옵션 사용
  • kafka-topics.sh 을 실행하여 --delete 옵션을 확인합니다.
카프카에서 kafka-topics.sh을 실행하고 사용할수 있는 옵션들 나열

카프카 토픽을 지우는 delete 옵션
  • --delete 옵션으로 토픽을 지우겠습니다. 예) bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic test3  
지우려는 토픽이 존재하지 않아 발생하는 에러
* 없는 토픽을 지우려고 하면 위와 같은 에러가 뜹니다.
  • 토픽을 지우지 못하게 delete.topic.enable 파라미터 옵션을 false로 바꾸겠습니다. 일단 다시 토픽을 하나 생성합니다. 
마침표(.)와 언더스코어(_)를 토픽명에 사용할 때 주의사항
* 토픽명을 정할 때 . (마침표) 나 _ (언더스코어, 언더바)중에서 하나만 쓰는 것은 괜찮지만 둘 다 쓰면 충돌이 일어날 수 있습니다.  아래를 보시면 이해하기 쉽습니다.
카프카에서 마침표와 언더스코어 충돌로 나타나는 에러
* test.1 토픽을 만들때는 괜찮았지만 test_1을 만들려고하니 test.1 과 충돌이 일어나서 만들수가 없습니다. 제 개인적인 생각으론 카프카 내부 토픽과의 혼란과 충돌을 피하기 위해 .(마침표)나 _(언더스코어, 언더바)는 사용을 안하는 게 좋은 것 같습니다. - (하이픈)을 사용하면 좋을 것 같습니다.
  • config 폴더안의 server.properties 를 열고 delete.topic.enable=false를 추가합니다. (디폴트값은 true) 그리고 카프카 서버를 재시작합니다. 카프카 서버가 재시작할 때 로그를 잘 보시면 delete.topic.enable 값이 false로 변경된 것을 확인하실 수 있습니다. 
카프카 서버 프로퍼티 파일에서 delete.topic.enable=false 추가

카프카가 재시작할 때 서버 로그에서 확인할 수 있는 delete.topic.enable 옵션 값
  • 토픽을 지우려고 시도해 봅니다. 
토픽을 지우려고 할 때 delete.topic.enable이 false로 되어있어서 발생하는 에러
* 토픽을 지우려고 하면 에러가 뜹니다. 

Comments