04. Producer

Producer

๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์‚ฐ(Produce)ํ•ด์„œ Kafka์˜ Topic์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Record(Message) ๊ตฌ์กฐ

  • Header, Key, Value

  • Message == Record == Event == Data

  • Serializer/Deserializer

    • byte array๋กœ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”

    • Key์™€ Value ์šฉ Serializer๋ฅผ ๊ฐ๊ฐ ์„ค์ •

// Serializer example
private Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, " broker101:9092,broker102:9092 "); 
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, org.apache.kafka.common.serialization.StringSerializer.class); 
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, io.confluent.kafka.serializers.KafkaAvroSerializer.class);
KafkaProducer producer = new KafkaProducer(props);

Producing to Kafka

send() ์ดํ›„์˜ ๊ณผ์ •์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ž‘๋™.

Partitioner

  • ๋ฉ”์‹œ์ง€๋ฅผ Topic์˜ ์–ด๋–ค Partition์œผ๋กœ ๋ณด๋‚ผ์ง€ Hash ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•ด ๊ฒฐ์ • Partition = Hash(Key) % Number of Partitions

  • key๊ฐ€ null์ธ ๊ฒฝ์šฐ โ†’ 2.4 ์ด์ „์˜ Default Partitioner๋Š” Round Robin ์ •์ฑ…์œผ๋กœ ๋™์ž‘ โ†’ 2.4 ์ดํ›„์˜ Default Partitioner๋Š” Sticky ์ •์ฑ…์œผ๋กœ ๋™์ž‘ ํ•˜๋‚˜์˜ Batch๊ฐ€ ๋‹ซํž ๋•Œ๊นŒ์ง€ ํ•˜๋‚˜์˜ partition์—๊ฒŒ record๋ฅผ ๋ณด๋‚ด๊ณ  ๋žœ๋ค์œผ๋กœ Partition ์„ ํƒ.

  • Partioner๋Š” customizing ๊ฐ€๋Šฅ

Last updated