2016-03-22 8 views
1

トピックにJavaオブジェクトを公開するために私自身のシリアライザを作成しました。私は、serializer.classプロパティを自分のカスタムシリアライザに設定しました。 プロデューサを実行すると、次の例外が発生します。誰かが私を助けることができますか?新しいシリアライザと古いプロデューサーを使用しているようKafkaはjava.lang.NoSuchMethodExceptionをスローします

例外

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) 

私のプロデューサー

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

答えて

1

が見えます。古いシリアライザでは、コンストラクタでVerifiableProperties値が使用されました。新しいプロデューサを試してみるか、シリアライザとしてDecoderの実装を使用してください。

解除/シリアライザは、(代わりに古いデコーダのシリアライザとデシリアライザ)を実装するインタフェースが行ったように、シリアライザのプロパティ名が新しいプロデューサーと変化していることにも注意してください

+0

に私はVerifiablePropertiesのverifiablePropertiesパラメータでコンストラクタを追加するように整理。私は使用しなければならない新しいAPIが何であるか分かりますか? – Ratha

関連する問題