๐Ÿ–ฅ๏ธ TurtleMartํ”„๋กœ์ ํŠธ/๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] key.serializer ๋ˆ„๋ฝ๋์„ ๋•Œ Kafka ๋ฉ”์‹œ์ง€ ์ „์†ก ์‹คํŒจ

carrot0911 2025. 5. 27. 21:12

๐Ÿ› ๋ฌธ์ œ ํ˜„์ƒ

Kafka ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

Invalid value null for configuration key.serializer: must be non-null

 

 

๐Ÿ” ์›์ธ ๋ถ„์„

Kafka๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด key์™€ value๋ฅผ ์ง๋ ฌํ™”ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ฐ˜๋“œ์‹œ ๋‘ ๊ฐ€์ง€ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.

  • key.serializer → ๋ณดํ†ต org.apache.kafka.common.serialization.StringSerializer
  • value.serializer → ๋ณดํ†ต org.apache.kafka.support.serializer.JsonSerializer

ํ•˜์ง€๋งŒ ํ˜„์žฌ KafkaTemplate์„ ๊ตฌ์„ฑํ•  ๋•Œ ์ด ์„ค์ •๋“ค์ด ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

 

๐Ÿ” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Kafka Producer ์„ค์ • ํด๋ž˜์Šค(KafkaProducerConfig)์—์„œ ProducerFactory์— ์„ค์ •์„ ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

โœ… ์ˆ˜์ • ์ „ (๋ˆ„๋ฝ๋œ ์„ค์ •)

new DefaultKafkaProducerFactory<>(new HashMap<>()) // key.serializer ์—†์Œ

โœ… ์ˆ˜์ • ํ›„

@Bean
public ProducerFactory<String, KafkaMessage<StockDecreasePayload>> kafkaMessageProducerFactory() {
    Map<String, Object> props = new HashMap<>();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
    return new DefaultKafkaProducerFactory<>(props);
}
@Bean
public KafkaTemplate<String, KafkaMessage<StockDecreasePayload>> kafkaTemplate() {
    return new KafkaTemplate<>(kafkaMessageProducerFactory());
}

 

 

๐Ÿ’ก ์ถ”๊ฐ€ ํŒ

Spring Boot์˜ application.yml์ด๋‚˜ .properties์— ์„ค์ •ํ•˜๋”๋ผ๋„, ์ง์ ‘ ์ƒ์„ฑํ•œ KafkaTemplate์—๋Š” ์ฝ”๋“œ์—์„œ ๋ช…์‹œํ•ด์•ผ ์ ์šฉ์ด ๋œ๋‹ค.
@EnableKafka ๋งŒ์œผ๋กœ๋Š” ์ž๋™์œผ๋กœ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.