在kafka中创建主题时出错
Error while creating topic in kafka
我在 Cygwin 的 window 上使用 kafka 并尝试创建主题并收到以下错误
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.
但是正在创建主题。
你能帮我吗
我认为你提到的路径不正确。正如消息所说,文件未找到异常。
下面是在 Java 中向 kafka 发送消息的示例代码。假设 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();
}`
您是在 Kafka documentation 中使用此命令行创建主题吗?
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
我在 Cygwin 中 运行 该脚本时遇到了同样的错误,我在 bin/kafka-run-class.sh 中进行了此更改以解决该问题(类似到第一个答案的第 3 步中引用的 Cygwin 类路径解决方案 here):
原文:
# Log4j settings
if [ -z "$KAFKA_LOG4J_OPTS" ]; then
KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/config/tools-log4j.properties"
fi
收件人:
# Log4j settings
if [ -z "$KAFKA_LOG4J_OPTS" ]; then
KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$(cygpath -wp $base_dir/config/tools-log4j.properties)"
fi
我 运行 .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"}
工作得很好 :)
我在 Cygwin 的 window 上使用 kafka 并尝试创建主题并收到以下错误
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.
但是正在创建主题。 你能帮我吗
我认为你提到的路径不正确。正如消息所说,文件未找到异常。 下面是在 Java 中向 kafka 发送消息的示例代码。假设 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();
}`
您是在 Kafka documentation 中使用此命令行创建主题吗?
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
我在 Cygwin 中 运行 该脚本时遇到了同样的错误,我在 bin/kafka-run-class.sh 中进行了此更改以解决该问题(类似到第一个答案的第 3 步中引用的 Cygwin 类路径解决方案 here):
原文:
# Log4j settings
if [ -z "$KAFKA_LOG4J_OPTS" ]; then
KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/config/tools-log4j.properties"
fi
收件人:
# Log4j settings
if [ -z "$KAFKA_LOG4J_OPTS" ]; then
KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$(cygpath -wp $base_dir/config/tools-log4j.properties)"
fi
我 运行 .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"}
工作得很好 :)