일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- annotation processor
- github api
- 자바스터디
- throwable
- raw 타입
- docker
- 제네릭 타입
- 접근지시자
- 자바할래
- 람다식
- 프리미티브 타입
- 제네릭 와일드 카드
- System.out
- System.err
- System.in
- 상속
- Study Halle
- 합병 정렬
- Switch Expressions
- 정렬
- 스파르타코딩클럽
- 바운디드 타입
- auto.create.topics.enable
- 브릿지 메소드
- junit 5
- 로컬 클래스
- 항해99
- 익명 클래스
- yield
- 함수형 인터페이스
- Today
- Total
코딩하는 털보
Kafka의 자동 토픽 생성 본문
카프카를 사용하다 자주 마주친 에러.
바로 메시지를 produce/consume할 토픽이 없다는 에러이다.
2023-02-01 16:01:58,034 WARN [kafka-producer-network-thread | producer-1] (org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.handleSuccessfulResponse:1119) - [Pr
oducer clientId=producer-1] Error while fetching metadata with correlation id 3 : {dev.pintel.simul.org.vehicle.json=UNKNOWN_TOPIC_OR_PARTITION}
KAFKA topic은 DB 테이블처럼 만들어두고 사용하는게 관용적이다.
하지만 편의를 위해서 브로커가 메시지를 받으면 topic을 자동으로 생성해주도록 할 수 있다. (default가 true)
auto.create.topics.enable=true
나는 데이터 수집 서비스를 개발하고 있는데, 데이터 소스마다 서로 다른 KAFKA 토픽을 사용하며 수집 프로세스가 동적으로 추가될 수 있다는 특징때문에 이런 기능이 필요했다.
주의할 점은 이렇게 자동으로 생성되는 topic은 kafka 프로퍼티의 여러 auto create topics 관련 프로퍼티에 의해 replica의 수나 partition의 수가 결정되게 되기 때문에 이런것들을 기본 설정에 의존한다면 직접 생성했을때보다 성능이 느려질 수 있다.
또한 메시지를 받으면 자동으로 생성되기 때문에 여러 남발된 메시지에 의해 사용하지 않는 topic이 계속 생겨나서 브로커 성능에 영향을 미칠수도 있다고 한다.
따라서 아래의 프로퍼티를 통해 default topic 설정을 한 뒤 사용하거나default.replication.factor
num.partitions
또는 KAFKA ADMIN API 같은 다른 방법을 시도해보는것도 좋을 것 같다.
참고 :
https://debezium.io/documentation/reference/stable/configuration/topic-auto-create-config.html
https://kafka.apache.org/documentation/#consumerconfigs_allow.auto.create.topics