Ошибка при создании темы в кафке

Я использую kafka в окне Cygwin и пытаюсь создать тему и получаю следующую ошибку

log4j:ERROR Could not read configuration file from URL [file:/cygdrive/d/kafka/bin/../config/tools-log4j.properties].
java.io.FileNotFoundException: \cygdrive\d\kafka\bin\..\config\tools-log4j.properties (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:524)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at org.apache.log4j.Logger.getLogger(Logger.java:117)
    at org.I0Itec.zkclient.ZkClient.<clinit>(ZkClient.java:57)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:51)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)
log4j:ERROR Ignoring configuration file [file:/cygdrive/d/kafka/bin/../config/tools-log4j.properties].
log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkEventThread).
log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkConnection).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Но тема создается. Можете ли вы помочь мне в этом


person 1209    schedule 08.04.2015    source источник


Ответы (3)


Я думаю, что путь, который вы упомянули, неверен. Как говорится в сообщении File Not Found Exception. Ниже приведен пример кода для отправки сообщений в kafka на Java. Предположим, что сервер Kafka работает локально.

`public static void main(String[] args){
    long events = 100000;
    Random rnd  = new Random();

    Properties props = new Properties();
    props.put("metadata.broker.list", "localhost:9092");
    props.put("serializer.class", "kafka.serializer.StringEncoder");
    props.put("partitioner.class", "com.pranjal.kafkatest.SimplePartitioner");
    props.put("request.required.acks", "1");

    ProducerConfig config = new ProducerConfig(props);

    Producer<String, String> producer = new Producer<String, String>(config);

    for(int i=0;i<events;++i){

        long runtime = new Date().getTime();
        String ip    = "192.168.2." + rnd.nextInt(255);

        String msg= "Hello";

        KeyedMessage<String, String> data = new KeyedMessage<String, String>("sentences", ip, msg);
        producer.send(data);
    }
    producer.close();
}`
person sahu    schedule 09.04.2015
comment
я не устанавливал путь, не могли бы вы помочь мне, где я должен это сделать? - person 1209; 10.04.2015
comment
Кстати, с этим сообщением проблем нет, поскольку оно связано только с утилитами ведения журнала \cygdrive\d\kafka\bin..\config\tools-log4j.properties. Вот почему ваша тема создается правильно, несмотря на это сообщение об ошибке. Не волнуйтесь. - person sahu; 10.04.2015
comment
спасибо. не могли бы вы помочь мне с примером кода отправки сообщений в kafka с помощью java - person 1209; 13.04.2015
comment
Большое спасибо sahu.Как я могу просмотреть сообщения в теме отправлены они или нет - person 1209; 15.04.2015
comment
Используйте консольный потребитель. Он присутствует в каталоге bin kafka. - person sahu; 15.04.2015
comment
Да, я пытался получить следующую ошибку log4j: ERROR Не удалось прочитать файл конфигурации с URL-адреса - person 1209; 15.04.2015
comment
Любой пример кода для получения количества сообщений в теме - person 1209; 17.04.2015

Вы создаете тему с помощью этой командной строки из документации Kafka?

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

Я столкнулся с той же ошибкой при запуске этого скрипта в Cygwin, и я внес это изменение в bin/kafka-run-class.sh, чтобы решить проблему (аналогично решению пути к классам Cygwin, указанному в шаге 3 первый ответ здесь):

Оригинал:

# Log4j settings if [ -z "$KAFKA_LOG4J_OPTS" ]; then KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/config/tools-log4j.properties" fi

To:

# Log4j settings if [ -z "$KAFKA_LOG4J_OPTS" ]; then KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$(cygpath -wp $base_dir/config/tools-log4j.properties)" fi

person Ben Thomas    schedule 01.10.2015
comment
Похоже, они обновили этот скрипт для поиска Cygwin, но если вы попытаетесь использовать Git Bash, как я, вы все равно получите ошибку: P - person b15; 07.05.2019
comment
Я получал ту же ошибку с git bash. Работал как шарм! - person dane131; 26.04.2020
comment
У меня сработало в git bash, спасибо - person Ahmed AMMOURI; 08.07.2021

Я запустил сценарий .bat вместо сценария .sh, и это сработало. Мне не пришлось ничего менять.

Первоначально я запускал этот скрипт в git bash;

bin/kafka-console-consumer.sh --boostrap-server localhost:9092 --topic kafkaTopic

и получил следующую ошибку:

$ bin/kafka-console-consumer.sh --boostrap-server localhost:9092 --topic kafkaTopic
log4j:ERROR Could not read configuration file from URL
[file:/c/Users/admin/Documents/kafka/bin/../config/tools-log4j.properties].
java.io.FileNotFoundException: 

\c\Users\admin\Documents\kafka\bin\..\config\tools-log4j.properties
(The system cannot find the path specified)
      at java.io.FileInputStream.open0(Native Method)
      at java.io.FileInputStream.open(FileInputStream.java:195)
      at java.io.FileInputStream.<init>(FileInputStream.java:138)
      at java.io.FileInputStream.<init>(FileInputStream.java:93)
      at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
      at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
      at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:557)
      at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
      at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
      at org.slf4j.impl.Log4jLoggerFactory.<init>(Log4jLoggerFactory.java:66)
      at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:72)
      at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:45)
      at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
      at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
      at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
      at com.typesafe.scalalogging.Logger$.apply(Logger.scala:48)
      at kafka.utils.Log4jControllerRegistration$.<init>(Logging.scala:25)
      at kafka.utils.Log4jControllerRegistration$.<clinit>(Logging.scala)
      at kafka.utils.Logging.$init$(Logging.scala:47)
      at kafka.tools.ConsoleConsumer$.<init>(ConsoleConsumer.scala:45)
      at kafka.tools.ConsoleConsumer$.<clinit>(ConsoleConsumer.scala)
      at kafka.tools.ConsoleConsumer.main(ConsoleConsumer.scala)

Я открыл cmd и выполнил следующую команду:

C:\Users\admin\Documents\kafka\bin\windows>kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic kafkaTopic

Выход:

{"message":"Spring Kafka is cool","sender":"Sydney"}

Красиво сработало :)

person Sydney Molobela    schedule 20.09.2019