1

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

例外

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

1 に答える 1

4

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

デシリアライザーが実装するインターフェイスと同様に、シリアライザーのプロパティ名が新しいプロデューサーで変更されたことにも注意してください (古いデコーダーの代わりにシリアライザーとデシリアライザー)。

于 2016-03-22T16:00:18.813 に答える