YAML 文件的 Kafka Producer AWSSchemaRegistryConstants 属性

Kafka Producer AWSSchemaRegistryConstants properties for YAML File

我已经使用我自己的 ProducerFactory bean 设置了一个 Kakfa 生产者,它使用 AWS Glue Schema Registry 来注册 AVRO 模式,我想将所有属性移动到一个 YML 文件,但我不知道如何在中声明 AWSSchemaRegistryConstants 属性一个 yml 文件,有什么想法吗?代码如下所示:

@Configuration
@EnableKafka
class KafkaProducerConfig {

 @Bean
 fun producerConfigs(): Map<String, Any> {
    val props: MutableMap<String, Any> = HashMap()
    props[ProducerConfig.BOOTSTRAP_SERVERS_CONFIG] = "localhost:9092"
    props[ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG] = IntegerSerializer::class.java
    props[ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG] = AWSKafkaAvroSerializer::class.java
    props[AWSSchemaRegistryConstants.AWS_REGION] = "ap-southeast-2"
    props[AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING] = "true"
    props[AWSSchemaRegistryConstants.SCHEMA_NAME] = "ac-schema"
    props[AWSSchemaRegistryConstants.REGISTRY_NAME] = "poc-registry"
    return props
}

@Bean
 fun producerFactory(): ProducerFactory<Int, AcCk> {
    return DefaultKafkaProducerFactory(producerConfigs())
}

@Bean
 fun kafkaTemplate(): KafkaTemplate<Int, AcCk> {
    return KafkaTemplate(producerFactory())
 }

}

YML 文件:

spring:
 kafka:
  producer:
   bootstrap-servers: localhost:9092
   key:
     serializer: org.apache.kafka.common.serialization.IntegerSerializer
   value:
     serializer: com.amazonaws.services.schemaregistry.serializers.avro.AWSKafkaAvroSerializer

   AWSSchemaRegistryConstants ?????? 

producer 下的缩进是正确的,但是,您需要打开 enum/class for AWSSchemaRegistryConstants 并查看每个属性是什么,然后将字符串复制到配置中。您基本上要求的与尝试在 YAML 中使用 ProducerConfig 对象没有什么不同,例如

或者您可以继续在代码中构建 KafkaTemplate 而不是使用 YAML,因为这将允许您进行编译时 属性 验证并使用枚举 class