2016-03-22 12 views
1

Ich habe meinen eigenen Serialiser geschrieben, um ein Java-Objekt zu einem Thema zu veröffentlichen. Ich habe die Eigenschaft serializer.class auf meinen benutzerdefinierten Serialiser gesetzt. Beim Ausführen des Producer bekomme ich folgende Ausnahme. Kann mir jemand helfen?Kafka wirft java.lang.NoSuchMethodException

Ausnahme

Exception in thread "main" java.lang.NoSuchMethodException: com.xxxx.CustomFileSerializer.<init>(kafka.utils.VerifiableProperties) 
    at java.lang.Class.getConstructor0(Class.java:3082) 
    at java.lang.Class.getConstructor(Class.java:1825) 
    at kafka.utils.CoreUtils$.createObject(CoreUtils.scala:222) 
    at kafka.producer.Producer.<init>(Producer.scala:62) 
    at kafka.javaapi.producer.Producer.<init>(Producer.scala:26) 
    at com.xx.KafkaProducer.generateMessgaes(KafkaProducer.java:50) 
    at com.xx.KafkaProducer.main(KafkaProducer.java:60) 

Mein Produzent

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
     props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
     props.put("serializer.class", "com.xxxx.CustomFileSerializer"); 


kafka.javaapi.producer.Producer<String, FileObj> producer = new kafka.javaapi.producer.Producer<String, FileObj>(
       producerConfig); 
     String key = "key1"; 
     KeyedMessage<String, RawFile> record = new KeyedMessage<String, RawFile>(topic, key, file); 
     producer.send(record); 
     producer.close(); 

Antwort

1

Sieht aus wie Sie den alten Produzenten mit einem neuen Serializer verwenden sind. Alte Serialisierer haben in ihrem Konstruktor einen VerifyableProperties-Wert verwendet. Probieren Sie den neuen Hersteller aus oder verwenden Sie eine Implementierung von Decoder als Ihren Serializer.

Beachten Sie auch, dass die Serializer Eigenschaftsnamen mit dem neuen Produzenten geändert, wie die Schnittstellen haben, die de/Serializer implementieren (Serializer und Deserializer anstelle des alten Decoder)

+0

ich aussortiert wie einen Konstruktor mit VerifiableProperties verifiableProperties Parameter angeben können. Darf ich wissen, welche neuen APIs ich verwenden muss? – Ratha

Verwandte Themen