首页 > 解决方案 > kafka 消费者组线程的线程顺序在每次启动时都不同

问题描述

我在 Spring Boot 2.1.4 上下文中使用 kafka-streams 2.0.1。CONSUMER-ID 具有以下模式(自动生成的 bei kafka-streams!?):

<client.id>-StreamThread-<threadSequenceNumber>-<consumer|producer|restore-consumer> (source: StreamsConfig.java)

我发现,值:threadSequenceNumber在我的应用程序启动时并非每次都相同,因为我有两个由 Beans 提供的 StreamThread。我已经尝试通过用@DependsOn.

每次threadSequenceNumber更改时,最后的偏移量都会丢失。有人知道我如何强制执行正确的顺序吗?

标签: javaspringspring-bootapache-kafkaapache-kafka-streams

解决方案


你的观察是正确的。线程序列号由 Kafka Streams 创建。Spring Boot 对此无能为力。

请注意,此行为将在即将发布的 2.3 版本中更改:https ://issues.apache.org/jira/browse/KAFKA-8285

每次当 threadSequenceNumber 更改时,最后的偏移量都会丢失。

为什么这个?偏移量基于application.id.


推荐阅读