32.3.3 其它的Kafka属性

附录A,常见应用属性展示了支持自动配置的属性。注意,这些属性(带有连字符或者驼峰式)大部分直接映射到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.oneKafka属性设置为first(应用到producers、consumers和admins)。prop.twoadmin属性设置为secondprop.threeconsumer属性设置为thirdprop.fourproducer属性设置为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明确支持的配置项。