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