Java错误中的Kafka Producer

时间:2018-06-15 04:17:29

标签: java apache-kafka kafka-producer-api

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

    USAGE: java [options] KafkaServer server.properties [--override property=value]*
    Option      Description                           
    ------      -----------                           
    --override  Optional property that should override values set in server.properties file

我正在使用带有JDK 8的Netbeans IDE,并在库中包含了所有Kafka jar文件。我相信库文件中没有错误,因为代码构建正确但不运行。

以下是Simple Producer代码:

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();
    }
}

请帮助:)

2 个答案:

答案 0 :(得分:1)

看起来Netbeans执行错误的类 - 不是你的registration_registration_types类,而是kafka.Kafka(看起来这是Kafka本身的主要类)。请配置Netbeans以执行正确的类。

我建议从Confluent Examples开始使用现有的Producer示例,然后重新使用Maven项目......

答案 1 :(得分:0)

我认为您的制作人配置错误。以下是Kafka官方文档中的一个示例:

 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.sizebuffer.memory尝试较小的值。