Send Custom Java Objects to Kafka Topic

后端 未结 2 1446
日久生厌
日久生厌 2020-12-16 15:48

I have my custom Java Object and wish to leverage JVM\'s in built serialization to send it to a Kafka topic, but serialization fails with below error

2条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-16 16:42

    We have 2 Options as listed below

    1) If we intend to send custom java objects to producer, We need to create a serializer which implements org.apache.kafka.common.serialization.Serializer and pass that Serializer class during creation of your producer

    Code Reference below

    public class PayloadSerializer implements org.apache.kafka.common.serialization.Serializer {
    
        public void configure(Map map, boolean b) {
    
        }
    
        public byte[] serialize(String s, Object o) {
    
           try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ObjectOutputStream oos = new ObjectOutputStream(baos);
                oos.writeObject(o);
                oos.close();
                byte[] b = baos.toByteArray();
                return b;
            } catch (IOException e) {
                return new byte[0];
            }
        }
    
        public void close() {
    
        }
    }
    

    And set the value serializer accordingly

    
    

    2) No need to create custom serializer class. Use the existing ByteArraySerializer, but during send follow the process

    Java Object -> String (Preferrably JSON represenation instead of toString)->byteArray

提交回复
热议问题