动物园管理员& Kafka错误KeeperErrorCode = NodeExists

时间:2015-12-21 10:45:19

标签: apache-kafka apache-zookeeper

我写了一个kafka consumerproducer,直到今天仍然正常。 今天早上,当我开始zooekeeperkafka时,我的消费者没有成功阅读消息,而Zookeeper log我读了这个错误

INFO Got user-level KeeperException when processing sessionid:0x151c41e62e10000 type:create cxid:0x2a zxid:0x1e txntype:-1 reqpath:n/a Error Path:/brokers/ids Error:KeeperErrorCode = NodeExists for /brokers/ids (org.apache.zookeeper.server.PrepRequestProcessor)
你可以帮帮我吗?在短短几天内可能会发生什么变化?我不明白。 非常感谢你。

5 个答案:

答案 0 :(得分:3)

在server.properties文件中查找 log.dirs ,然后从此处删除所有Kafka和zookeeper日志,然后分别尝试重新启动zookeeper和Kafka。我遇到了同样的问题,并且解决了这个问题。

答案 1 :(得分:0)

我在Windows 7上运行的Kafka 2.11中出现此错误。 我认为这个例外不是问题,因为它只是信息级别。只需确保代理仍在运行。即使有这个错误,我仍然可以:

  1. 创建并列出主题kafka-topics.bat
  2. 使用主题kafka-console-consumer.bat
  3. 以编程方式发送消息producer.send(new ProducerRecord<String, String>("topic", "hello"))

答案 2 :(得分:0)

根据2016年10月8日https://groups.google.com/forum/#!topic/confluent-platform/h0gEik_Ii1E的汇合情况

这些不是错误,您可以看到日志级别为INFO。很简单 记录卡夫卡试图创建一个已经存在的节点。完全 卡夫卡的正常行为,不必担心。

是否存在与消息相关的实际问题,或者一切正常吗?

答案 3 :(得分:0)

转到Kafka根目录并查找日志文件。并清除所有日志。例如: 说您的kafka已安装在下载文件夹中:

cd ~/Downloads/kafka_2.13-2.6.0
rm -rf logs

它将解决问题。

答案 4 :(得分:-1)

在我的情况下,它确实会影响功能,因为我无法使用消息。见下面的代码

Vertx instance = VertxConfig.getInstance();

    Properties consumerConfig = new Properties();
    consumerConfig.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    consumerConfig.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
    consumerConfig.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);

// consumerConfig.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,&#34;最早&#34;); // consumerConfig.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,&#34; false&#34;);

    Properties producerConfig = new Properties();
    producerConfig.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    producerConfig.put("acks", "1");

    String topic = "dstv-queue-3";
    consumer = KafkaConsumer.create(instance, consumerConfig);
    producer = KafkaProducer.create(instance, producerConfig, String.class, String.class);
    consumer.subscribe(topic);

    instance.setPeriodic(2000, worker -> {
        KafkaProducerRecord<String, String> record = KafkaProducerRecord.create(topic, "message");
        producer.write(record, writeHandler -> {
            RecordMetadata metadata = writeHandler.result();

            //if meta data returned..
            if (metadata != null) {
                long offset = metadata.getOffset();
                int partition = metadata.getPartition();
                System.out.println("completed write: " + (writeHandler.succeeded() ? "successful" : "failed") + " offset:" + offset + " partition: " + partition);
            }
        });
    });

    AtomicLong counter = new AtomicLong();
    consumer.handler(readHandler -> System.out.println(counter.getAndAdd(1) + ". " + readHandler.value() + " was received"));