Apache kafka Kafka抛出java.lang.NoSuchMethodException
我已经编写了自己的serialiser,将java对象发布到主题。我将serializer.class属性设置为自定义序列化程序。 当运行producer时,我得到以下异常。有人能帮我吗 例外情况Apache kafka Kafka抛出java.lang.NoSuchMethodException,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,我已经编写了自己的serialiser,将java对象发布到主题。我将serializer.class属性设置为自定义序列化程序。 当运行producer时,我得到以下异常。有人能帮我吗 例外情况 Exception in thread "main" java.lang.NoSuchMethodException: com.xxxx.CustomFileSerializer.<init>(kafka.utils.VerifiableProperties) at java.la
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)
线程“main”java.lang.NoSuchMethodException中的异常:com.xxxx.CustomFileSerializer.(kafka.utils.VerifiableProperties)
位于java.lang.Class.getConstructor0(Class.java:3082)
位于java.lang.Class.getConstructor(Class.java:1825)
位于kafka.utils.CoreUtils$.createObject(CoreUtils.scala:222)
在卡夫卡。制片人。制片人。(制片人。斯卡拉:62)
在kafka.javaapi.producer.producer.(producer.scala:26)
com.xx.KafkaProducer.generateMessgaes(KafkaProducer.java:50)
位于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();
props.put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“serializer.class”、“com.xxxx.CustomFileSerializer”);
kafka.javaapi.producer.producer producer=新的kafka.javaapi.producer.producer(
生产配置);
字符串key=“key1”;
KeyedMessage记录=新的KeyedMessage(主题、键、文件);
制作人。发送(记录);
producer.close();
看起来您正在使用旧的生产者和新的序列化程序。旧序列化程序在其构造函数中采用了可验证属性值。尝试使用新的生成器或使用解码器的实现作为序列化程序
还请注意,序列化程序属性名称随着新的生产者而更改,反序列化程序实现的接口(序列化程序和反序列化程序而不是旧的解码器)也一样。看起来您正在将旧生产者与新的序列化程序一起使用。旧序列化程序在其构造函数中采用了可验证属性值。尝试使用新的生成器或使用解码器的实现作为序列化程序
还请注意,序列化程序属性名称随着新的生产者而更改,反序列化程序实现的接口(序列化程序和反序列化程序,而不是旧的解码器)也是如此。我像添加具有VerifiableProperties VerifiableProperties参数的构造函数一样进行了分类。我可以知道我必须使用的新API是什么吗?我像添加一个带有可验证属性的构造函数一样进行了分类。我可以知道我必须使用的新API是什么吗?