“线程中的异常”;“主要”;java.lang.IllegalArgumentException:运行kafka producer时参数数量错误

“线程中的异常”;“主要”;java.lang.IllegalArgumentException:运行kafka producer时参数数量错误,java,apache-kafka,Java,Apache Kafka,我正在试着运行卡夫卡制作人在这里找到的 这是卡夫卡制作人课程: package com.kafka.demo; import java.util.*; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; /* A Simple producer using API. This producer is creating lo

我正在试着运行卡夫卡制作人在这里找到的

这是卡夫卡制作人课程:

package com.kafka.demo;
import java.util.*;
import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
/* A Simple producer using API. This producer is creating log messages and sending to a topic called vulab123 on a node with name vulab-build-system Please make sure vulab-build-system is configured in the /etc/hosts file in your unix or linux environment */
public class KafkaProducer
{
public static void main(String[] args)
{

    //long events = Long.parseLong(args[0]);

    long events =100;

    Random rnd = new Random();
    Properties props = new Properties();
    props.put("metadata.broker.list", "10.25.3.207:6667");
    //props.put("producer.type", "sync");
    props.put("zk.connect","10.25.3.207:2181");
    props.put("serializer.class", "kafka.serializer.StringEncoder");
    props.put("partitioner.class", "com.kafka.demo.KafkaPartitioner");
    props.put("request.required.acks", "1");
    props.put("producer.type","async");

    ProducerConfig config = new ProducerConfig(props);

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

    for (long nEvents = 0; nEvents<events; nEvents++)
    {
        System.out.println("creating event "+nEvents);
        long runtime = new Date().getTime();
        String ip = "192.168.2."+ rnd.nextInt(255);
        String msg = runtime + ",www.vulab.com," + ip;
        KeyedMessage<String, String> data = new KeyedMessage<String, String>("vulab123", ip, msg);
        producer.send(data);

    //System.out.println(data);
    }
    producer.close();
}

}
}

我得到以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at kafka.utils.Utils$.getObject(Utils.scala:567)
at kafka.javaapi.producer.Producer.<init>(Producer.scala:39)
at com.kafka.demo.KafkaProducer.main(KafkaProducer.java:34)
线程“main”java.lang.IllegalArgumentException中的异常:参数数目错误 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源) 位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源) 位于java.lang.reflect.Constructor.newInstance(未知源) 位于kafka.utils.utils$.getObject(utils.scala:567) 在kafka.javaapi.producer.producer.(producer.scala:39) 位于com.kafka.demo.KafkaProducer.main(KafkaProducer.java:34)
关于如何解决这个问题的任何想法或建议。

这只是直觉,但请尝试使用:

KafkaProducer<String, String> producer = new KafkaProducer<String, String>(config);
KafkaProducer producer=新的KafkaProducer(配置);
而不是

Producer<String, String> producer = new Producer<String, String>(config);
Producer-Producer=新的Producer(配置);

还要确保您使用的是正确版本的ApacheKafka库。

您确定发布的代码完整吗?我在第34行没有看到任何错误。我添加了分区代码。在您遵循的教程顶部有一个红色和粗体文本。你试着听从那个建议了吗?
Producer<String, String> producer = new Producer<String, String>(config);