gpt4 book ai didi

java - "Malformed data. Length is negative"反序列化 avro 类时

转载 作者:行者123 更新时间:2023-12-01 08:52:00 31 4
gpt4 key购买 nike

我使用 kafka 和 avro 序列化: http://docs.spring.io/spring-cloud-stream/docs/current-SNAPSHOT/reference/htmlsingle/#_avro_schema_registry_client_message_converters

我在本地架构注册表中注册了架构,并使用 application.yml 中的设置将 ed@EnableSchemaRegistryClient 添加到我的应用程序:

spring:
cloud:
stream:
bindings:
output:
destination: output
input:
destination: topicName
contentType: application/*+avro
schemaRegistryClient:
endpoint: http://127.0.0.1:8081

我还使用 avro-tools-1.8.1.jar 生成了类。现在我正在尝试读取并转换来自 kafka 的消息:

  @StreamListener(Sink.INPUT)
public void handlePublish(MyClass message) throws IOException {
logger.info("Receiving MyClass" + message);
}

但是转换器失败并显示:org.apache.avro.AvroRuntimeException:数据格式错误。长度为负

堆栈跟踪:

 org.springframework.messaging.MessagingException: Exception thrown while invoking kafka.Consumer#handlePublish[1 args]; nested exception is org.apache.avro.AvroRuntimeException: Malformed data. Length is negative: -62
at org.springframework.cloud.stream.binding.StreamListenerAnnotationBeanPostProcessor$StreamListenerMessageHandler.handleRequestMessage(StreamListenerAnnotationBeanPostProcessor.java:364) ~[spring-cloud-stream-1.1.1.RELEASE.jar:1.1.1.RELEASE]
....
Caused by: org.apache.avro.AvroRuntimeException: Malformed data. Length is negative: -62
at org.apache.avro.io.BinaryDecoder.doReadBytes(BinaryDecoder.java:336) ~[avro-1.8.1.jar:1.8.1]
...at org.springframework.cloud.stream.schema.avro.AbstractAvroMessageConverter.convertFromInternal(AbstractAvroMessageConverter.java:91) ~[spring-cloud-stream-schema-1.1.1.RELEASE.jar:1.1.1.RELEASE]
at org.springframework.messaging.converter.AbstractMessageConverter.fromMessage(AbstractMessageConverter.java:175) ~[spring-messaging-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.messaging.converter.CompositeMessageConverter.fromMessage(CompositeMessageConverter.java:67) ~[spring-messaging-4.3.4.RELEASE.jar:4.3.4.RELEASE]
at org.springframework.messaging.handler.annotation.support.PayloadArgumentResolver.resolveArgument(PayloadArgumentResolver.java:117) ~[spring-messaging-4.3.4.RELEASE.jar:4.3.4.RELEASE]
....

最佳答案

我注意到您上面使用的属性是 spring.cloud.schemaRegistryClient 但它需要是 spring.cloud.stream.schemaRegistryClient

关于java - "Malformed data. Length is negative"反序列化 avro 类时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42328506/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com