使用原始 headers 发布 null/tombstone 消息
Publish null/tombstone message with raw headers
我正在构建一个 Spring Cloud Stream Kafka 处理器应用程序,它将使用字符串键使用原始数据,有时使用来自 Kafka 主题的空负载。我想为另一个主题生成一个字符串键和空负载(在 Kafka 中称为墓碑)。为了在消息上使用原始 headers,我需要输出一个 byte[]
,但是如果我将 KafkaNull.INSTANCE
编码为 byte[]
,它将按字面输出一个 byte[]
的字符串=26=]哈希码。
如果我尝试发送 byte[]
以外的任何内容,我将无法使用原始 headers.
正确的做法是什么?如果有效负载为空,headers 会在哪里?我在部署时设置了 producer.headerMode=embeddedHeaders
,这似乎没有什么不同,仍然有哈希码作为有效负载。
您可以使用后者介绍的 useNativeEncoding
属性(与 raw
headerMode
重叠,因为它跳过 headers)但允许您使用本机 Kafka 序列化程序。
参见 http://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Brooklyn.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties or http://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Chelsea.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties
我正在构建一个 Spring Cloud Stream Kafka 处理器应用程序,它将使用字符串键使用原始数据,有时使用来自 Kafka 主题的空负载。我想为另一个主题生成一个字符串键和空负载(在 Kafka 中称为墓碑)。为了在消息上使用原始 headers,我需要输出一个 byte[]
,但是如果我将 KafkaNull.INSTANCE
编码为 byte[]
,它将按字面输出一个 byte[]
的字符串=26=]哈希码。
如果我尝试发送 byte[]
以外的任何内容,我将无法使用原始 headers.
正确的做法是什么?如果有效负载为空,headers 会在哪里?我在部署时设置了 producer.headerMode=embeddedHeaders
,这似乎没有什么不同,仍然有哈希码作为有效负载。
您可以使用后者介绍的 useNativeEncoding
属性(与 raw
headerMode
重叠,因为它跳过 headers)但允许您使用本机 Kafka 序列化程序。
参见 http://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Brooklyn.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties or http://docs.spring.io/autorepo/docs/spring-cloud-stream-docs/Chelsea.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties