我在反序列化已发布到Kafka主题的消息时遇到问题。我使用的是springboot、springcloudstream、apachekafka和apacheavro。我试图反序列化的对象有一个构造函数,它接受两个参数。我从主题中留言时遇到了一个例外:
org.springframework.messaging.MessagingException: Exception thrown while invoking com.foo.bar.messaging.ResponseListener#handleResponse[1 args];
nested exception is java.lang.RuntimeException: java.lang.NoSuchMethodException: com.foo.bar.TheObject.<init>() at org.springframework.cloud.stream.binding.StreamListenerMessageHandler.handleRequestMessage(StreamListenerMessageHandler.java:63) ~[spring-cloud-stream-2.0.1.RELEASE.jar:2.0.1.RELEASE]
正在反序列化的类有一个构造函数,它接受2个参数,如下所示:
public class TheObject {
private final int thingOne;
private final int thingTwo;
@JsonCreator
public TheObject(@JsonProperty("thingOne") int thingOne, @JsonProperty("thingTwo") int thingTwo) {
this.thingOne = thingOne;
this.thingTwo = thingTwo;
}
}
以前我用过jackson,只是在kafka主题上贴了字符串,所以 @JsonCreator
注解足以告诉Map器如何构造对象,但我现在改为使用arvo。Jackson不再被用于这部连续剧了。我在上面的例子中留下了注解来说明它是如何工作的。
在配置方面,我使用了一个属性: dynamicSchemaGenerationEnabled: true
不显式声明对象模式。对于spring模式注册中心和合流模式注册中心(除了这里描述的问题之外),这似乎都可以很好地工作
有没有与 @JsonCreator
将与arvo反序列化一起工作的注解?
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!