デフォルトでは、カフカ春クラウドストリームから消費し、また合流APIによって生成されたカフカのメッセージを消費するには?

ドナル・ハーレー:

私は他の(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それぞれ生産者と消費者のために。ここでも、リファレンスマニュアルを参照してください。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=180028&siteId=1