我必须在kafka消息中设置自定义标头,我的kafka集群本身支持标头(1.x.x)。我当前正在使用springCloudVersion = Finchley.RELEASE。
当我设置属性时
default:
producer:
headerMode: none
输出中没有标题。
另一方面,如果我要设置
default:
producer:
headerMode: headers
包括contentType
和spring_json_header_types
的许多标头进入标头,这极大地影响了吞吐量。我觉得Kafka是一种与语言/框架无关的消息传递机制,Spring应该提供一种仅包含用户提供的标头的方法。是否有任何变通办法,只获得用户设置的kafka主题标头,同时取消所有与spring cloud相关的标头。
我已经在GitHub上回答了这个问题。在多个地方问相同的问题很浪费您和我们的时间。就像我在那儿所说的那样,Stack Overflow是问问题的首选位置。
再次是答案:
请使用堆栈溢出来提问; GitHub问题用于报告错误或要求新功能。
您可以在binder configuration中提供自定义标题映射器。
spring.cloud.stream.kafka.binder.headerMapperBeanName
KafkaHeaderMapper的bean名称,用于在spring消息头和kafka头之间进行映射。例如,如果您希望在使用JSON反序列化头的DefaultKafkaHeaderMapper中自定义受信任的程序包,则使用此方法。
默认:无。
实施您自己的KafkaHeaderMapper
并将其添加为@Bean
并配置活页夹以使用它。