我尝试使用本地安装的融合版本4.0.0的官方schema-registry-confluent示例(消费者/生产者),当发送发帖请求并在侦听器中接收时,它可以发送“传感器” avro消息,但是当我使用kafka-avro时-console-consumer工具随confluent 4.0.0一起提供,以查看发送的avro消息,该工具引发以下错误(a)。我还尝试使用由kafka-avro-console-producer工具发送的avro消息(该消息可以在kafka-avro-console-consumer工具中正确显示),它报告了以下错误(b)。给定的示例不支持融合4.0.0吗?非常感谢!
(a)kafka-avro-console-consumer error =>
ERROR运行使用者时发生未知错误:(kafka.tools.ConsoleConsumer $:107) org.apache.kafka.common.errors.SerializationException:反序列化ID为-1的Avro消息时出错 引起原因:org.apache.kafka.common.errors.SerializationException:未知的魔术字节!
(b)侦听器错误=>
org.springframework.messaging.converter.MessageConversionException:无法读取JSON:字符#1的字节#7处无效的UTF-32字符0x51473863(0x0010ffff以上);嵌套的异常为java.io.CharConversionException:在字符#1的字节#7处无效的UTF-32字符0x51473863(0x0010ffff以上) 在org.springframework.messaging.converter.MappingJackson2MessageConverter.convertFromInternal(MappingJackson2MessageConverter.java:234)〜[spring-messaging-5.1.0.BUILD-SNAPSHOT.jar!/:5.1.0.BUILD-SNAPSHOT]
答案 0 :(得分:0)
每次都有MessageConversionException
时,它仅表示提供的消息转换器无法转换消息。 。 。而且理所当然的,因为我们不能处理所有情况,只有常见的情况。
因此,您应该实现自定义消息转换器(从头开始或扩展现有的消息转换器之一)。
这是有关如何定义自定义消息转换器的更多信息
https://docs.spring.io/spring-cloud-stream/docs/Fishtown.M1/reference/htmlsingle/#spring-cloud-stream-overview-user-defined-message-converters