我正在构建一个Spring Cloud Stream Kafka处理器应用程序,它将使用String键消耗原始数据,有时使用Kafka主题的空载荷 . 我想向另一个主题生成一个String键和null有效负载(在Kafka中称为墓碑) . 为了在消息上使用原始标头,我需要输出 byte[]
,但如果我将 KafkaNull.INSTANCE
编码为 byte[]
,它将逐字输出对象哈希码的字符串 .
如果我尝试发送除 byte[]
之外的任何内容,我就不能使用原始标头 .
这样做的正确方法是什么?如果有效载荷为空, Headers 甚至会在哪里?我在部署时设置了 producer.headerMode=embeddedHeaders
,这似乎没有什么区别,仍然将哈希码作为有效负载 .
1 回答
您可以使用后者引入
useNativeEncoding
属性(它与raw
_1322600重叠,因为它跳过 Headers )但允许您使用本机Kafka序列化程序 .见http://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Brooklyn.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties或http://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Chelsea.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties