32.3.3 Additional Kafka Properties
32.3.3 其它的Kafka属性
[附录A,常见应用属性](../X. Appendices/A. Common application properties.md)展示了支持自动配置的属性。注意,这些属性(带有连字符或者驼峰式)大部分直接映射到Apache Kafka带点的属性。详情请查看Apache Kafka的文档。
这些属性中的头几个既会应用到生产者也会应用到消费者。但是如果你希望各自使用不同的值,你可以指定它们为生产者类别或者消费者类别。Apache Kafka将属性按照重要性分为:HIGH,MEDIUM和LOW。Spring Boot自动配置支持所有的重要性为HIGH的属性、一些选定的重要性为MEDIUM和LOW的属性,和任何没有默认值的属性。
只有Kafka支持的属性的一个子集能够通过KafkaProperties
类来定义。如果你希望用其它的不被直接支持的属性,来配置生产者或者消费者,使用下面的例子:
spring.kafka.properties.prop.one=first
spring.kafka.admin.properties.prop.two=second
spring.kafka.consumer.properties.prop.three=third
spring,kafka.producer.properties.prop.four=fourth
这把通常的prop.one
Kafka属性设置为first
(应用到producers、consumers和admins)。prop.two
admin属性设置为second
。prop.three
consumer属性设置为third
。prop.four
producer属性设置为fourth
。
你也可以如下配置Spring Kafka JsonDeserializer
:
spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
spring.kafka.consumer.properties.spring.json.value.default.type=org.foo.Invoice
spring.kafka.consumer.properties.spring.json.trusted.packages=org.foo,org.bar
相似地,你可以禁用JsonSerializer
的默认行为——在header里传递类型信息:
spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.producer.properties.spring.json.add.type.headers=false
重要 以此种方式定义的属性会覆盖任何Spring Boot明确支持的配置项。