序列化异常。反序列化Avro消息错误(StringIndexOutOfBoundsException)

问题描述 投票:0回答:1

当KafkaStream试图反序列化Arvo消息时,我遇到了这个错误。

[filtering-app-6adef284-11eb-48f8-8ca0-cde7da5224ab-StreamThread-1] ERROR org.apache.kafka.streams.KafkaStreams - stream-client [filtering-app-6adef284-11eb-48f8-8ca0-cde7da5224ab] All stream threads have died. The instance will be in error state and should be closed.
[filtering-app-6adef284-11eb-48f8-8ca0-cde7da5224ab-StreamThread-1] INFO org.apache.kafka.streams.processor.internals.StreamThread - stream-thread [filtering-app-6adef284-11eb-48f8-8ca0-cde7da5224ab-StreamThread-1] Shutdown complete
Exception in thread "filtering-app-6adef284-11eb-48f8-8ca0-cde7da5224ab-StreamThread-1" org.apache.kafka.streams.errors.StreamsException: Deserialization exception handler is set to fail upon a deserialization error. If you would rather have the streaming pipeline continue after a deserialization error, please set the default.deserialization.exception.handler appropriately.
    at org.apache.kafka.streams.processor.internals.RecordDeserializer.deserialize(RecordDeserializer.java:80)
    at org.apache.kafka.streams.processor.internals.RecordQueue.maybeUpdateTimestamp(RecordQueue.java:160)

异常原因是:

Caused by: org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id 1
Caused by: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: begin 1, end 0, length 1
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1529)

Caused by: java.lang.StringIndexOutOfBoundsException: begin 1, end 0, length 1
    at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
    at java.base/java.lang.String.substring(String.java:1874)

avro的配置是很简单的。

{
  "namespace": "io.confluent.developer.avro",
  "type": "record",
  "name": "Publication",
  "fields": [
    {"name": "name", "type": "string"},
    {"name": "title", "type": "string"}
  ]
}

这是从这个教程中得到的: https:/kafka-tutorials.confluent.iofilter-a-stream-of-eventskstreams.html。. 制作者将输入的字符串"{"name": "George R. R. Martin", "title": "A Dream of Spring"}"没有任何问题,但是KafkaStream基本上是试图过滤事件,但未能反序列化对象以执行Java过滤逻辑......

以前有人遇到过这个问题吗?感谢任何建议

java apache-kafka avro apache-kafka-streams confluent-schema-registry
1个回答
1
投票

找到了问题所在:一个代理碍事。

根本原因是应用无法连接到schema-registry。就在这里记录下来,以防以后有人遇到同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.