首页 > 解决方案 > 间歇性警告 ConsumerCoordinator 我们收到的任务与我们当前的订阅不匹配

问题描述

为什么我在启动我的 Kafka Streams 应用程序时会间歇性地点击以下 WARN 消息?

它不仅仅是一个警告,因为它会淹没应用程序日志并且 Kafka Streams 应用程序无法启动。

通常,当我进行重新部署时,它就会起作用。

[my-app-0 my-app] 2020-03-25 14:00:12.931 WARN 1 --- [-StreamThread-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=my-app-b8f0b2a0-271b-4499-85bd-9e22d4a8b4b1-StreamThread-1-consumer, groupId=my-app] We received an assignment [topic-one-0, topic-two-0] that doesn't match our current subscription Subscribe(topic-two); it is likely that the subscription has changed since we joined the group. Will try re-join the group with current subscription

在我重新启动应用程序后,上面的警告消失了,我得到了一个不同的警告,但至少应用程序可以工作!

[my-app-0 my-app] 2020-03-25 14:05:54.300 WARN 1 --- [-StreamThread-1] o.a.k.c.c.internals.ConsumerCoordinator : [Consumer clientId=my-app-b0f22dc1-479b-4f7c-a862-b20f70eedc35-StreamThread-1-consumer, groupId=my-app] The following subscribed topics are not assigned to any members: [topic-one]

标签: apache-kafkaapache-kafka-streams

解决方案


第一条消息表明消费者从分配的主题中获得了一个分区,但它没有订阅。如果您使用相同application.id(因此group.id)启动多个应用程序实例,但两个应用程序订阅不同的主题,则可能会发生这种情况:这在 Kafka Streams 中是不允许的;所有具有相同需求的实例都application.id需要订阅某些主题并执行完全相同的拓扑。

第二条消息表明,组内的消费者确实订阅了一个主题,但一些主题分区没有分配给任何消费者是该组。这可能是由于增量重新平衡(如 Kafka Streams 2.4 中介绍的):在将主题分区重新分配给不同的客户端之前,它首先只会从旧客户端取消分配,以允许客户端清理资源等。在连续重新平衡中主题分区应分配给新客户端。因此,只要 WARN 不存在(即重复多次重新平衡)并且发生连续的重新平衡,这是预期的行为。


推荐阅读