0

私はカフカのトピックから文字列のキーと時々ヌルペイロードで生データを消費します春のクラウドストリームカフカプロセッサアプリを構築していてヌル/墓石のメッセージを公開します。私は別のトピックに文字列キーとヌルペイロード(カフカの中の墓石として知られています)を作りたいと思います。メッセージ上で生のヘッダを使うためには、byte []を出力する必要がありますが、Kafka.INSTANCEをバイト[]にエンコードすると文字通りオブジェクトのハッシュコードの文字列が出力されます。私はバイト[]以外を送信しようとした場合は、生のヘッダー

は、私は生のヘッダーを使用することはできません。

これを行う正しい方法は何ですか?ペイロードがnullの場合、ヘッダーはどこにありますか?私は、デプロイ時にproducer.headerMode = embeddedHeadersを設定しましたが、それは違いを生み出すようには見えませんでしたが、ペイロードとしてhashcodeを持っています。

答えて

1

useNativeEncodingプロパティ(これはヘッダーをスキップするという意味でrawheaderModeと重複します)を使用できますが、ネイティブのカフカシリアライザを使用することができます。

http://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Brooklyn.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_propertieshttp://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Chelsea.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties

+0

ああを参照してください、右、もちろん、そう 'KafkaNull'ペイロードは、そのモードで動作します。 'spring-integration-kafka'は、ヌルのペイロードを表すために、特別なメッセージペイロード' KafkaNull.INSTANCE'を使います。 –

+0

私はバグとして扱わなければならないと思っています。コアレベルで同様の慣習を持ち、バインダーで翻訳を行うこともできます。 –

+0

ありがとうございます。私はKafkaNull.Instanceを使用しています。プロデューサシリアライザをオーバーライドする方法私はいくつかの設定を追加しましたが、ストリームのdefとdeployの両方の小道具でそれを変更するものはありません。実際には、コンシューマーはそれが余分な設定値を取得したことを警告しました。理にかなっていますが、プロデューサーはまだbytearrayシリアライザを使用するように設定されています。 –

関連する問題