间歇性 WARN ConsumerCoordinator 我们收到的分配与我们当前的订阅不匹配
Intermittent WARN ConsumerCoordinator We received an assignment that doesn't match our current subscription
为什么我在启动 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
在我重新启动应用程序后,上面的 WARN 消失了,我得到了一个不同的 WARN,但至少应用程序可以正常工作!
[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]
第一条消息表明消费者从分配给它的主题中获得了一个分区,但它没有订阅。如果您使用相同的 application.id
(因此 group.id
)启动多个应用程序实例,但两个应用程序订阅不同的主题,就会发生这种情况:这在 Kafka Streams 中是不允许的;所有具有相同 application.id
的实例都需要订阅完全相同的一些主题并执行完全相同的拓扑。
第二条消息表明,组内的某个消费者确实订阅了一个主题,但是一些主题分区没有分配给该组的任何消费者。这可能是由于增量重新平衡(如 Kafka Streams 2.4 中引入的):在将主题分区重新分配给不同的客户端之前,它首先只会从旧客户端取消分配,以允许客户端清理资源等。在连续的重新平衡中主题分区应分配给新客户端。因此,只要警告不持续存在(即重复多次重新平衡)和连续重新平衡发生,这是预期的行为。
为什么我在启动 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
在我重新启动应用程序后,上面的 WARN 消失了,我得到了一个不同的 WARN,但至少应用程序可以正常工作!
[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]
第一条消息表明消费者从分配给它的主题中获得了一个分区,但它没有订阅。如果您使用相同的 application.id
(因此 group.id
)启动多个应用程序实例,但两个应用程序订阅不同的主题,就会发生这种情况:这在 Kafka Streams 中是不允许的;所有具有相同 application.id
的实例都需要订阅完全相同的一些主题并执行完全相同的拓扑。
第二条消息表明,组内的某个消费者确实订阅了一个主题,但是一些主题分区没有分配给该组的任何消费者。这可能是由于增量重新平衡(如 Kafka Streams 2.4 中引入的):在将主题分区重新分配给不同的客户端之前,它首先只会从旧客户端取消分配,以允许客户端清理资源等。在连续的重新平衡中主题分区应分配给新客户端。因此,只要警告不持续存在(即重复多次重新平衡)和连续重新平衡发生,这是预期的行为。