使用原始 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