1

我正在尝试使用 spring boot、spring 云流模式注册表、kafka binder 与 avro 消息生产者、kafka 和 avro 消费者构建一个工作示例。消费消息时出现以下错误:

错误 7059 --- [afka-listener-1] oscsbkKafkaMessageChannelBinder:无法使用 contentType [application/x-java-object;type=io.igx.android.Sensor] java 反序列化 [io.igx.android.Sensor]。 lang.NullPointerException

在消费者端有 spring.cloud.stream.bindings.output.contentType=application/ +avro 在生产者端有 spring.cloud.stream.bindings.output.contentType=application/ +avro。

为什么消费者没有看到和使用 avro 内容类型而不是 application/x-java-object。

4

2 回答 2

1

我认为您需要application/*+avro制作人方面的内容类型。(注意 * 前缀)。为生产者设置好之后,您能否确认是否仍需要为消费者指定输入内容类型。我认为消费者可以根据生产者设置的内容类型来推断。

于 2017-03-09T12:22:14.593 回答
1

频道名称错误。所以问题是我使用的是 spring.cloud.stream.bindings.input.contentType=application/*‌​+avro

而不是这个

spring.cloud.stream.bindings.{我的频道名称}.contentType=application/*‌​+avro.

当我将 {MY CHANNEL NAME} 更改为我使用的名称时,魔法发生了。

即使我没有在消费者方面指定内容类型,它也可以工作。

另外,我需要指定 spring.cloud.stream.schemaRegistryClient.endpoint 如果它不是默认的,就像我的情况一样,在生产者和消费者方面。

于 2017-03-09T19:33:39.197 回答