2017-03-09 13 views
0

春のブート、春の雲のストリームのスキーマレジストリ、kafkaバインダーを使用して、avroメッセージプロデューサー、kafkaとavroの領事との作業例を構築しようとしています。春のブートと春の雲のストリームでavafコンテンツの種類を設定する方法

ERROR 7059 --- [afka-listener-1] oscsbkKafkaMessageChannelBinder:[io.igx.android.Sensor]をcontentType [application/x-java-agent]を使用して逆シリアル化できません。オブジェクト;タイプ= io.igx.android.Sensor] java.lang.NullPointerExceptionが

I有し spring.cloud.stream.bindings.output.contentType =アプリケーション/ +アブロ消費者側と spring.cloudに .stream.bindings.output.contentType = application/ + avro (プロデューサー側)。

なぜ消費者はapplication/x-java-objectの代わりにavroコンテンツタイプを見たり使用したりしないのですか?

答えて

0

プロデューサー側でコンテンツタイプapplication/*+avroが必要と思われます。 (*接頭辞に注意してください)。これがプロデューサに設定されると、コンシューマの入力contentTypeを指定する必要があるかどうかを確認できますか。私は、消費者がプロデューサによって設定されたコンテンツタイプに基づいてそれを推測できると思う。

+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の

。{MYチャンネル名} = spring.cloud.stream.bindings.input.contentTypeを使用しました.contentType = application/* + avro。

{MY CHANNEL NAME}を私が魔法を使用した名前に変更したとき。

消費者側でコンテンツタイプを指定しなくても動作します。

また、spring.cloud.stream.schemaRegistryClient.endpoint を私の場合のようにデフォルトでない場合は、両方をプロデューサとコンシューマ側で指定する必要があります。

関連する問題