如何使用Spring Cloud Stream仅发送自定义标头

时间:2019-10-29 21:07:49

标签: apache-kafka spring-cloud spring-kafka spring-cloud-stream spring-cloud-stream-binder-kafka

我必须在kafka消息中设置自定义标头,我的kafka集群本身支持标头(1.x.x)。我目前正在使用springCloudVersion = Finchley.RELEASE。

设置属性时

default:
    producer:
      headerMode: none

输出中都没有标题。

另一方面,如果我要设置

default:
    producer:
      headerMode: headers

许多标头包括contentTypespring_json_header_types进入标头,这极大地影响了吞吐量。我觉得Kafka是一种与语言/框架无关的消息传递机制,Spring应该提供一种仅包含用户提供的标头的方法。是否有任何变通办法,只能在kafka主题上获取用户设置的标头,同时取消所有与spring cloud相关的标头。

1 个答案:

答案 0 :(得分:1)

我已经在GitHub上回答了这个问题。在多个地方问相同的问题很浪费您和我们的时间。就像我在那儿所说的,Stack Overflow是问问题的首选。

这又是答案:

请使用Stack Overflow提出问题; GitHub问题用于报告错误或要求新功能。

您可以在binder configuration中提供自定义标头映射器。

  

spring.cloud.stream.kafka.binder.headerMapperBeanName

     

KafkaHeaderMapper的Bean名称,用于在Spring消息头和Kafka头之间进行映射。例如,如果您希望在将JSON反序列化用于标头的DefaultKafkaHeaderMapper中自定义受信任的程序包,则使用

。      

默认:无。

实施自己的KafkaHeaderMapper,并将其添加为@Bean,并配置活页夹以使用它。