2017-03-09 48 views
0

試圖使用春季開機,春季雲流模式註冊表,kafka活頁夾,使用avro消息製作者,kafka和avro使用者創建工作示例。嘗試使用消息時出現錯誤:如何在春季開機和春季雲流上設置kafka製作者的avro內容類型

錯誤7059 --- [afka-listener-1] oscsbkKafkaMessageChannelBinder:無法使用contentType [application/x-java-對象;類型= io.igx.android.Sensor]顯示java.lang.NullPointerException

我有 spring.cloud.stream.bindings.output.contentType =應用/ +阿夫羅 消費者側和 spring.cloud .stream.bindings.output.contentType = application/ + avro 生產者端。

爲什麼消費者不會看到和使用avro內容類型而不是application/x-java-object。

回答

0

我認爲你需要生產者方面的內容類型application/*+avro。 (注意*前綴)。一旦爲生產者設置了,你是否可以確認是否仍然需要爲消費者指定輸入內容類型。我認爲消費者可以根據生產者設置的內容類型推斷它。

+0

我現在在生產者端使用spring.cloud.stream.bindings.output.contentType = application/* + avro,在消費者端使用spring.cloud.stream.bindings.input.contentType = application/* + avro。同樣的錯誤:com.esotericsoftware.kryo.KryoException:java.lang.NullPointerException –

+0

...如果在avro模式中沒有數組,我可以正常使用消息。 –

+0

將內容類型設置爲「spring.cloud.stream.bindings.output.contentType = avro/bytes」會發生什麼? –

0

頻道名稱錯誤。所以,問題是我是用 spring.cloud.stream.bindings.input.contentType =應用程序/ * +的Avro

,而不是這個

spring.cloud.stream.bindings。{我的頻道名稱} .contentType =應用/ * +阿夫羅。

當我將{MY CHANNEL NAME}更改爲我使用魔法的名稱時。

即使我沒有在消費者一方指定內容類型,它也能正常工作。

此外,我需要指定spring.cloud.stream.schemaRegistryClient.endpoint 如果它不是默認的,就像我的情況一樣,在生產者和消費者兩方面。