示例:我正在推动像这样的输出流
Message<String> message = MessageBuilder.withPayload(MY-STRING).build();
processor.output().send(message);
然后它进入Kinesis流,最终从Firehose进入S3。当我在文件中查看时,它们有以下标题信息:
<FF>^A^KcontentType^@^@^@^Z"text/plain;charset=UTF-8 MY-STRING
这似乎很奇怪,因为我们有一些基于Python的生产者,他们都没有添加这样的标题——只有文本。
是什么导致了这种行为?有关闭它的设置吗?我们只需要文本字符串。
将生产者headerMode
设置为none
。
https://docs.spring.io/spring-cloud-stream/docs/3.1.2/reference/html/spring-cloud-stream.html#_producer_properties
headerMode
设置为
none
时,将禁用输出中的标头嵌入。它只对本机不支持消息头并且需要嵌入头的消息中间件有效。当不支持本机标头时,此选项在为非Spring Cloud Stream应用程序生成数据时非常有用。当设置为headers
时,它使用中间件的本地头机制。当设置为embeddedHeaders
时,它会将标头嵌入到消息有效负载中。
默认值:取决于绑定器实现。
似乎embeddedHeaders
是该绑定器的默认值。。。
https://github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis/blob/57c926f4142feed545224ce3a244d9c20e2b6287/spring-cloud-stream-binder-kinesis/src/main/java/org/springframework/cloud/stream/binder/kinesis/provisioning/KinesisStreamProvisioner.java#L88-L90