Java 如何从spring cloud stream应用程序starter源代码生成的kafka消息中删除内容类型头

Java 如何从spring cloud stream应用程序starter源代码生成的kafka消息中删除内容类型头,java,spring,spring-boot,spring-cloud-stream,Java,Spring,Spring Boot,Spring Cloud Stream,对于twitter source,如果我们使用自定义卡夫卡消费者而不是@StreamListener(Sink),它将为每个卡夫卡消息创建一个30位的头。 @StreamListener将消息正确发送到带注释的方法(无标题)。问题是每个源的头大小都不同。 既然我在使用自定义kafka consumer,那么如何动态地理解消息的头大小呢。? 或者如何删除每条邮件的标题 更新:- 请在下面找到使用TCP源时在卡夫卡控制台消费者中收到的消息 � contentType"application/oc

对于twitter source,如果我们使用自定义卡夫卡消费者而不是
@StreamListener
(Sink),它将为每个卡夫卡消息创建一个30位的头。
@StreamListener
将消息正确发送到带注释的方法(无标题)。问题是每个源的头大小都不同。 既然我在使用自定义kafka consumer,那么如何动态地理解消息的头大小呢。? 或者如何删除每条邮件的标题

更新:-

请在下面找到使用TCP源时在卡夫卡控制台消费者中收到的消息

�
  contentType"application/octet-stream"hello world

我只需要得到这个信息。在本例中,hello world

您使用的是什么版本的卡夫卡?我之所以这么问,是因为从0.11开始,Kafka支持本地头文件,您就不会再有这个问题了

在源代码中设置
spring.cloud.stream.default.producer.headerMode=raw
将在消费者中读取消息时删除标题。

也可以更改此设置以删除恼人的标题

spring.cloud.stream.default.producer.useNativeEncoding=true

请注意,这需要将pom中的Spring Cloud Stream绑定器重写为kafka11工件(如果您使用的是Ditmars)。对于其他活页夹,设置
spring.cloud.stream.binding.output.header mode=raw
。看,谢谢你的支持。我的卡夫卡版本是0.10。你的意思是,如果我使用0.11卡夫卡,那么源发送的头将不会出现在卡夫卡消息中。目前,我正在使用kafka控制台消费者对其进行测试。我已经更新了通过控制台使用者收到的消息。如我所说,设置headermode=raw以删除嵌入的标头。我是否需要升级到0.11 kafka才能执行此操作,因为我尝试使用.10,但标头仍然存在。我也需要用卡夫卡11来构建人工制品。它成功了。当我们在源应用程序上设置以下属性时,kafka使用者不会收到标题<代码>spring.cloud.stream.default.producer.headerMode=raw。@Gary Russell建议对属性进行轻微更改。卡夫卡0.10也是如此。