“线程中的异常”;“主要”;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);