Producer의 객체 직렬화(Serializer) 전송의 이해
Producer와 Consumer간의 Serialized Message 전송
- Producer에서 Key, Value를 Serializer을 통해서 객체 직렬화된 Byte Array로 파티션 1번으로 전송한다.
- 전달 받은 Byte Array를 Consumer에서 Key, Value를 역직렬화를 한다.
Producer와 Consumer에서 직렬화/역직렬화 적용
- Producer의 Key, Value Serializer Type과 Consumer의 Key, Value Deserializer Type이 일치해야 한다.
Producer Client - Key: String, Value: String
...
Properties props = new Properties();
# bootstrap.servers
# key.serializer.class
# value.serializer.class
props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.45.245:9092");
props.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
# kafka producer object create
KafkaProducer<String, String> kafkaProducer = new KafkaProducer<>(props);
# producer record object create
ProducerRecord<String, String> producerRecord = new ProducerRecord<>(topicName, "hello world");
# kafka producer message send
kafkaProducer.send(producerRecord);
Consumer Client - Key: String, Value: String
...
Properties props = new Properties();
# bootstrap.servers
# key.serializer.class
# value.serializer.class
props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
props.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
props.setProperty(ConsumerConfig.GROUP_ID_CONFIG, "simple-group");
KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(props);
'kafka > core' 카테고리의 다른 글
Consumer Group과 Consumer Rebalancing (0) | 2025.04.22 |
---|---|
Key가 없는 메시지의 파티션 분배 전략 - 라운드로빈과 스티키 파티셔닝 (0) | 2025.04.21 |
여러 개의 파티션을 가지는 메시지 전송 (0) | 2025.04.17 |
Key 값을 가지는 메시지 전송 (0) | 2025.04.16 |
kafka-console-producer와 kafka-console-consumer로 producer와 consumer 테스트 (0) | 2025.04.10 |
댓글