Java 默认情况下,如何使用Kafka Spring云流,以及如何使用confluent API生成的Kafka消息?

Java 默认情况下,如何使用Kafka Spring云流,以及如何使用confluent API生成的Kafka消息?,java,spring,apache-kafka,spring-cloud-stream,Java,Spring,Apache Kafka,Spring Cloud Stream,我正在构建一个微服务组件,该组件将默认使用由其他(SCS)组件生成的SpringCloudStream(SCS)Kafka消息 但我还需要使用来自其他使用合流API的组件的Kafka消息 我有一个示例存储库,它显示了我正在尝试做的事情 这是下面带有SCS输入绑定和汇合输入绑定的应用程序配置 spring: application: name: kafka kafka: consumer: properties.schema.registry.url: htt

我正在构建一个微服务组件,该组件将默认使用由其他(SCS)组件生成的SpringCloudStream(SCS)Kafka消息

但我还需要使用来自其他使用合流API的组件的Kafka消息

我有一个示例存储库,它显示了我正在尝试做的事情

这是下面带有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是两个输入绑定的值反序列化器

我理解,因为配置在Kafka活页夹上,它将应用于使用该活页夹定义的所有使用者


是否有任何方法可以定义这些特定属性,以便它们仅应用于汇合特定的使用者绑定,而所有其他输入绑定都可以使用默认的SCS配置?

您可以通过
配置
属性设置绑定特定的使用者和生产者属性

spring.cloud.stream.kafka.bindings..consumer.configuration.foo.bar=baz

使用非标准序列化程序/反序列化程序时,必须分别为生产者和消费者设置
UseNativeEncode
UseNativeDecode
。再一次,请参阅参考手册。

我按照建议在
spring.cloud.stream.kafka.bindings.inputcolfluent.consumer.configuration
和设置
useNativeDecoding
下进行了上述更改,这起到了作用。看,我想早些时候,当我尝试这一点时,我混淆了这两个概念,有通用的生产者/消费者属性(所有粘合剂都有)和特定于粘合剂的生产者/消费者属性。
spring.cloud.stream.kafka.bindings.<channelName>.consumer.configuration.foo.bar=baz