【问题标题】:Kafka throws java.lang.NoSuchMethodException卡夫卡抛出 java.lang.NoSuchMethodException
【发布时间】:2016-03-23 00:00:18
【问题描述】:

我已经编写了自己的序列化程序来将 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();

【问题讨论】:

    标签: apache-kafka kafka-producer-api


    【解决方案1】:

    看起来您正在使用带有新序列化程序的旧生产者。旧的序列化程序在其构造函数中采用了 VerifiableProperties 值。尝试新的生产者或使用解码器的实现作为您的序列化器。

    另请注意,序列化器属性名称随着新生产者的变化而变化,反序列化器实现的接口也发生了变化(序列化器和反序列化器,而不是旧的解码器)

    【讨论】:

    • 我整理出来就像添加一个带有 VerifiableProperties 的verifiableProperties 参数的构造函数。我可以知道我必须使用哪些新 API 吗?
    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2014-10-19
    相关资源
    最近更新 更多