尝试使用spring boot,spring cloud stream schema registry,kafka binder构建avro消息生产者,kafka和avro消费者的工作示例。我在尝试使用消息时遇到错误:
ERROR 7059 --- [afka-listener-1] oscsbkKafkaMessageChannelBinder:无法使用contentType [application / x-java-object; type = io.igx.android]反序列化[io.igx.android.Sensor]。传感器] java.lang.NullPointerException
我有 spring.cloud.stream.bindings.output.contentType =应用/ +阿夫罗 在消费者方面 spring.cloud.stream.bindings.output.contentType =应用/ +阿夫罗 在生产者方面。为什么消费者没有看到和使用avro内容类型而不是application / x-java-object。
答案 0 :(得分:0)
我认为您需要生产者方面的内容类型application/*+avro
。 (注意*前缀)。为生产者设置后,您是否可以确认是否仍需要为使用者指定输入contentType。我认为消费者可以根据制作人设定的内容类型推断出它。
答案 1 :(得分:0)
频道名称错误。所以问题是我正在使用 spring.cloud.stream.bindings.input.contentType =应用/ * +阿夫罗
而不是
spring.cloud.stream.bindings。{MY CHANNEL NAME} .contentType = application / * + avro。
当我将{MY CHANNEL NAME}改为我用过魔法的名字时。
即使我没有在消费者方面指定内容类型,它仍然有效。
另外,我需要指定spring.cloud.stream.schemaRegistryClient.endpoint 如果它不是默认的,就像在我的情况下一样,在生产者和消费者方面都是默认的。