Java Kafka在使用相同拓扑进行滚动更新期间流错误状态
我遇到了这种奇怪的行为:在应用程序滚动更新(3个节点)期间,金丝雀吊舱失败了,因为所有的卡夫卡流都死掉了。更有趣的是,调查显示根本原因是:Java Kafka在使用相同拓扑进行滚动更新期间流错误状态,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,我遇到了这种奇怪的行为:在应用程序滚动更新(3个节点)期间,金丝雀吊舱失败了,因为所有的卡夫卡流都死掉了。更有趣的是,调查显示根本原因是: org.apache.kafka.streams.processor.internals.StreamThread - java.lang.IllegalStateException: Consumer was assigned partitions [my-service-KSTREAM-FILTER-0000000006-repartition-0,
org.apache.kafka.streams.processor.internals.StreamThread -
java.lang.IllegalStateException: Consumer was assigned partitions [my-service-KSTREAM-FILTER-0000000006-repartition-0, my-service-KSTREAM-MAP-0000000002-repartition-0]
which didn't correspond to subscription request [first_topic, second_topic, third_topic]
at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.handleAssignmentMismatch(ConsumerCoordinator.java:218)
at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.onJoinComplete(ConsumerCoordinator.java:264)
at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:424)
at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureActiveGroup(AbstractCoordinator.java:358)
at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:353)
at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1251)
at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1216)
at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1201)
at org.apache.kafka.streams.processor.internals.StreamThread.pollRequests(StreamThread.java:941)
at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:846)
at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:805)
at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:774)
这些重新分区主题是运行拓扑的现有内部主题。好吧,但为什么失败了
日志中还有一条线索:
INFO org.apache.kafka.clients.consumer.KafkaConsumer - [Consumer
clientId=my-service-f4d2b970-4a28-4221-b64f-5440c837203c-StreamThread-1-consumer,
groupId=my-service]
Subscribed to pattern: 'my-service-KSTREAM-FILTER-0000000012-repartition|my-service-KSTREAM-MAP-0000000011-repartition|
first_topic|second_topic|third_topic'
它显示Kafka Streams创建了不同的内部主题(不同的名称)并将其用作订阅模式。
只有在拓扑发生更改时才有可能:重新组织操作会导致内部主题重命名(如果不存在名称覆盖)。
在我的情况下,不存在与拓扑相关的更改。甚至还有相同的依赖版本
那么,在这种情况下,什么会引发内部话题的更名呢
注释:
- 卡夫卡流库版本=2.3.0
- 主题复制因子=3
- 主题分区=2