Compacted topic에 null key를 전송(produce)하면 어떻게 될까요?
1) Compacted 토픽 생성
$ ./kafka-topics.sh --bootstrap-server localhost:9092 --topic compact-test --config "cleanup.policy=compact" --create
Created topic compact-test.
$ ./kafka-topics.sh --bootstrap-server localhost:9092 --topic compact-test --describe
Topic: compact-test PartitionCount: 1 ReplicationFactor: 1 Configs: cleanup.policy=compact,segment.bytes=1073741824
Topic: compact-test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
2) null key 레코드 전송
public static void main(String[] args) throws Exception{
Properties configs = new Properties();
configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVERS);
configs.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
configs.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
KafkaProducer<String, String> producer = new KafkaProducer<>(configs);
ProducerRecord<String, String> record = new ProducerRecord<>(TOPIC_NAME, "test");
RecordMetadata meta = producer.send(record).get();
logger.info(meta.toString());
producer.flush();
producer.close();
}
3) 결과 로그
Exception in thread "main" java.util.concurrent.ExecutionException: org.apache.kafka.common.InvalidRecordException: This record has failed the validation on broker and hence be rejected.
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.valueOrError(FutureRecordMetadata.java:98)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:67)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:30)
at com.example.SimpleProducer.main(SimpleProducer.java:27)
Caused by: org.apache.kafka.common.InvalidRecordException: This record has failed the validation on broker and hence be rejected.
FAILURE: Build failed with an exception.
InvalidRecordException와 함께 레코드가 전송되지 않는다!
반응형
'빅데이터 > Kafka' 카테고리의 다른 글
신뢰성 있는 카프카 애플리케이션을 만드는 3가지 방법 (0) | 2023.09.22 |
---|---|
카프카 프로듀서의 acks=all 옵션은 사실(?) 느리지 않다! (0) | 2023.08.08 |
기존에 생성된 compact topic의 cleanup.policy를 변경하는 방법 (1) | 2023.06.30 |
아파치 카프카 Exactly-once 처리의 진실과 거짓 (1) | 2023.06.20 |
모던 데이터 플로우: 데이터 파이프라인을 잘 운영하는 방법 (1) | 2023.06.12 |
아파치 카프카 브로커 설정에서 listener와 advertised.isteners의 차이? (1) | 2023.03.26 |