私は他の(SCS)コンポーネントによって生成されたデフォルト春クラウドストリーム(SCS)カフカメッセージによって消費されますmicroserviceコンポーネントを構築しています。
しかし、私はまた、合流のAPIを使用している他の成分からカフカメッセージを消費する必要があります。
私は私がやろうとしているかを示している例リポジトリを持っています。
https://github.com/donalthurley/KafkaConsumeScsAndConfluent
これは、SCSの入力結合およびコンフルエント入力結合と下アプリケーション構成です。
spring:
application:
name: kafka
kafka:
consumer:
properties.schema.registry.url: http://192.168.99.100:8081
cloud:
stream:
kafka:
binder:
brokers: PLAINTEXT://192.168.99.100:9092
# configuration:
# specific:
# avro:
# reader: true
# key:
# deserializer: org.apache.kafka.common.serialization.StringDeserializer
# value:
# deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer
bindings:
inputConfluent:
contentType: application/*+avro
destination: confluent-destination
group: input-confluent-group
inputScs:
contentType: application/*+avro
destination: scs-destination
group: input-scs-group
例えば、私は両方の消費者はSCSのデフォルトの設定で作成されます上記の構成により、クラスorg.apache.kafka.common.serialization.ByteArrayDeserializerは、両方の入力バインディングの値デシリアライザです。
私は例えば、私の密集したクライアントから送信された構成で、私は両方の消費者を得る上記の構成でクラスをコメントを削除した場合io.confluent.kafka.serializers.KafkaAvroDeserializerは、両方の入力バインディングの値デシリアライザです。
設定はカフカの上にあるので、私はそれがバインダーで定義されたすべての消費者に適用されるバインダー理解しています。
私はデフォルトのSCSの設定を使用することができ、彼らは唯一の合流特定の消費者が結合し、他のすべての入力を結合するために適用されますので、それらの特定のプロパティを定義することができること方法はありますか?
あなたは経由でバインディング固有の消費者と生産者のプロパティを設定することができますconfiguration
プロパティ。
参照リファレンスマニュアルを。
spring.cloud.stream.kafka.bindings.<channelName>.consumer.configuration.foo.bar=baz
非標準シリアライザ/デシリアライザを使用するときは、設定する必要がありますuseNativeEncoding
し、useNativeDecoding
それぞれ生産者と消費者のために。ここでも、リファレンスマニュアルを参照してください。