使用Kafka-Avro-Console-Consumer消耗Spring Cloud Stream Kafka发送的Avro消息时出错

时间:2018-08-26 14:17:38

标签: avro spring-cloud-stream confluent confluent-schema-registry

我尝试使用本地安装的融合版本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]

1 个答案:

答案 0 :(得分:0)

每次都有MessageConversionException时,它仅表示提供的消息转换器无法转换消息。 。 。而且理所当然的,因为我们不能处理所有情况,只有常见的情况。 因此,您应该实现自定义消息转换器(从头开始或扩展现有的消息转换器之一)。 这是有关如何定义自定义消息转换器的更多信息 https://docs.spring.io/spring-cloud-stream/docs/Fishtown.M1/reference/htmlsingle/#spring-cloud-stream-overview-user-defined-message-converters