Spring Cloud Stream 2.0 是否与 Kafka broker 0.10.2 兼容?

Is Spring Cloud Stream 2.0 compatible with Kafka broker 0.10.2?

Spring Cloud Stream 指定其版本 2.0 使用 kafka-clients 1.0 并兼容 Kafka broker 1.0、0.11(不提及 0.10.2 及之前版本)。

Kafka 指定代理 0.10.2(甚至 0.10.1)与任何版本的 Java 客户端兼容,大概包括 kafka-clients 1.0.

那么 spring-cloud-stream-binder-kafka 2.0 和 0.10.2 代理之间是否存在任何兼容性问题?

我正计划从 spring-cloud-stream 1.2 + Kafka 0.10.2 升级到 spring-cloud-stream 2.0 + Kafka 1.0 并试图了解我是否可以这样做一次性升级(客户端 -> 1.0,然后代理 -> 1.0),否则 spring-cloud-stream.

支持的无停机升级路径是什么

是的,它应该可以正常工作(我刚刚用当前快照对其进行了测试)。

但是2.0默认使用原生kafkaheaders; headers 在 Kafka 中引入了 0.11 代理。

您需要将生产者 headerMode 设置为 noneembeddedHeaders。 (none 是 1.x 中弃用的 raw 的同义词。

1.x 默认使用 embeddedHeaders,或 raw (none) 如果这样配置。

因此,无论代理版本如何,如果您希望 2.0 生产者为 1.x 消费者创建消息,您无论如何都需要这样做。

在消费者端,2.0会检测消息是否有原生或嵌入headers(或none)。

另一个警告是您不能将活页夹 属性 autoAddPartitions 设置为 true 除非代理至少为 1.0.0。提供者使用 java AdminClient。 1.x 使用了可以增加分区的 scala 客户端。