Java错误中的卡夫卡生产者

Java错误中的卡夫卡生产者,java,apache-kafka,kafka-producer-api,Java,Apache Kafka,Kafka Producer Api,我对卡夫卡很陌生。我的Zookeeper服务器在端口2181上运行,Kafka服务器在端口9092上运行。我用java编写了一个简单的Producer。 但无论何时运行该程序,它都会显示以下错误: USAGE: java [options] KafkaServer server.properties [--override property=value]* Option Description ------

我对卡夫卡很陌生。我的Zookeeper服务器在端口2181上运行,Kafka服务器在端口9092上运行。我用java编写了一个简单的Producer。 但无论何时运行该程序,它都会显示以下错误:

    USAGE: java [options] KafkaServer server.properties [--override property=value]*
    Option      Description                           
    ------      -----------                           
    --override  Optional property that should override values set in server.properties file
我将Netbeans IDE与JDK 8一起使用,并在库中包含了所有Kafka jar文件。我相信库文件中没有错误,因为代码构建正确,但没有运行

以下是简单的生产者代码:

package kafka;

import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
import java.util.Properties;

public class Kafka {
    private static Producer<Integer, String> producer;
    private final Properties properties = new Properties();
    public Kafka() {
        properties.put("metadata.broker.list", "localhost:9092");
        properties.put("serializer.class", "kafka.serializer.StringEncoder");
        properties.put("request.required.acks", "1");
        producer = new Producer<>(new ProducerConfig(properties));
    }
    public static void main(String args[]) {
        Kafka k = new Kafka();
        String topic = "test";
        String msg = "hello world";
        KeyedMessage<Integer, String> data = new KeyedMessage<>(topic, msg);
        producer.send(data);
        producer.close();
    }
}
卡夫卡套餐;
导入kafka.javaapi.producer.producer;
导入kafka.producer.KeyedMessage;
导入kafka.producer.ProducerConfig;
导入java.util.Properties;
公共级卡夫卡{
私人静电生产者;
私有最终属性=新属性();
公共卡夫卡(){
properties.put(“metadata.broker.list”,“localhost:9092”);
properties.put(“serializer.class”、“kafka.serializer.StringEncoder”);
属性。放置(“请求。必需。确认”,“1”);
生产者=新生产者(新生产者配置(属性));
}
公共静态void main(字符串参数[]){
卡夫卡k=新卡夫卡();
字符串topic=“test”;
字符串msg=“你好世界”;
KeyedMessage数据=新的KeyedMessage(主题,消息);
生产者。发送(数据);
producer.close();
}
}

请帮助:)

我认为您的生产者配置错误。以下是卡夫卡官方文件中的一个示例:

 Properties props = new Properties();
 props.put("bootstrap.servers", "localhost:9092");
 props.put("acks", "all");
 props.put("retries", 0);
 props.put("batch.size", 16384);
 props.put("linger.ms", 1);
 props.put("buffer.memory", 33554432);
 props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
 props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

只需为
batch.size
buffer.memory

尝试较小的值,Netbeans似乎执行了错误的类-不是您的
kafka.kafka
类,而是
KafkaServer
(看起来这是kafka本身的一个主要类)。请配置Netbeans以执行正确的类


我建议从现有的Producer示例开始,并重新使用Maven项目…

您从哪里获得示例代码?谢谢Alex,我从
org.apache.kafka
导入了这些类,效果非常好@亚历克斯