【问题标题】:INCOMPLETE_SOURCE_TOPIC_METADATA error in KafkaStreamsKafkaStreams 中的 INCOMPLETE_SOURCE_TOPIC_METADATA 错误
【发布时间】:2020-06-28 19:38:12
【问题描述】:

我编写 KafkaStreams 应用程序并将 maximum.num.threads 设置为 1。我有三个源主题,分别有 6、8、8 个分区。当前使用 4 个实例运行此流拓扑,因此 4 个正在运行的流线程。

我在我的一个 kafka 主题中收到了 INCOMPLETE_SOURCE_TOPIC_METADATA。我从github找到了下面的代码 抛出这个错误并试图理解代码

    final Map<String, InternalTopicConfig> repartitionTopicMetadata = new HashMap<>();
    for (final InternalTopologyBuilder.TopicsInfo topicsInfo : topicGroups.values()) {
        for (final String topic : topicsInfo.sourceTopics) {
            if (!topicsInfo.repartitionSourceTopics.keySet().contains(topic) &&
                !metadata.topics().contains(topic)) {
                log.error("Missing source topic {} during assignment. Returning error {}.",
                    topic, AssignorError.INCOMPLETE_SOURCE_TOPIC_METADATA.name());
                return new GroupAssignment(
                    errorAssignment(clientMetadataMap, topic,
                        AssignorError.INCOMPLETE_SOURCE_TOPIC_METADATA.code())
                );
            }
        }
        for (final InternalTopicConfig topic : topicsInfo.repartitionSourceTopics.values()) {
            repartitionTopicMetadata.put(topic.name(), topic);
        }
    }

我的问题:

  1. 这个错误是因为 Kafka 主题的分区不匹配,还是 TopicsInfo 当时不可用(想想 Kafka 组失去了对 Kafka 主题的访问权限)?

  2. topicsInfo.repartitionSourceTopics 调用是什么意思?

【问题讨论】:

  • 你能分享你的拓扑,或者你想从 3 个输入主题中实现什么吗?

标签: apache-kafka kafka-consumer-api apache-kafka-streams apache-kafka-connect


【解决方案1】:

该错误意味着 Kafka Streams 无法为使用的主题获取所有必需的元数据,因此无法继续。如果主题不存在(即尚未创建或拼写错误),或者相应的元数据尚未广播给所有代理(对于这种情况,错误应该是暂时的),则可能发生这种情况。请注意,元数据是异步更新的,因此在所有代理了解新主题之前可能会有一些延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 2020-09-15
    • 2017-11-08
    • 2018-05-19
    • 1970-01-01
    • 2019-04-18
    • 2018-07-13
    • 2022-09-28
    相关资源
    最近更新 更多