본문 바로가기
kafka/core

Producer의 객체 직렬화(Serializer) 전송의 이해

by 개복이 2025. 4. 17.

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);

 

댓글