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
我已经使用我自己的 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