Spring Cloud Stream 嵌入式 header 格式 (Kafka)

Spring Cloud Stream embedded header format (Kafka)

我正在使用来自 Edgware 版本的 Spring Cloud Stream 活页夹来发送 Kafka 消息。我也在使用 Spring SleuthZipkin.

Spring 使用自定义 class EmbeddedHeaderUtils 将 headers 嵌入到 Kafka 消息中。这会导致消息的某些 non-Spring 消费者出现问题,他们必须处理此自定义解码。

我的问题: 有没有办法为消息 headers 配置 Spring 和自定义 encoder/decoder(例如纯 JSON)?或者可能使用 Kafka Headers?

理想情况下,任何自定义实现都需要与 Spring Sleuth 和 Zipkin 一起工作。

我一直在查看最新的 Finchley 版本,看看是否支持 Kafka headers,但不确定。

嵌入式 headers 不可插入,但您可以使用 ...producer.header-mode=raw 禁用它们。

使用 Ditmars (1.3.x) 你可以使用 kafka11 工件,它支持原生 headers - 你必须覆盖一堆依赖项 (kafka-clients, SK, SIK和 kafka 本身,如果您使用 KafkaEmbedded 代理进行测试。参见 the relesae notes).

关于覆盖版本a discussion on Gitter

spring-kafka 1.3.x 原生使用 0.11 但 1.3.1 及更高版本(1.3.2 是当前版本)也支持 1.0.0 客户端。

Elmhurst (2.0) - 目前处于里程碑阶段 - 使用 SK 2.1.0,它本身使用 1.0.0 kafka。