我在 eclipse 中运行生产者类时会遇到此错误: org.apache.kafka.common.config.config.configexception:缺少必需的配置" Bootstrap.servers",没有默认值
这是我的制作人班:
public class SimpleProducer {
public static void main(String[] args) throws Exception {
try {
String topicName = "mytopic";
String key = "key1";
String value = "Value-1";
Properties prop = new Properties();
prop.put("bootstrap.server","localhost:9092");
prop.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
prop.put("value.serializer","org.apache.kafka.cpmmon.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(prop);
ProducerRecord<String, String> record = new ProducerRecord<>(topicName,key,value);
producer.send(record);
producer.close();
System.out.println("SimpleProducer Completed.");
}
catch(Exception e) {
e.printStackTrace();
}
}
}
关于如何修复它的任何指针?
使用以下内容,避免使用硬编码值
prop.put("bootstrap.server","localhost:9092");
prop.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
prop.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
使用
prop.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServer);
prop.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
prop.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
PRODACERECONFIG 将在 org.apache.kafka.clients.producer package
只需更改
prop.put("bootstrap.server","localhost:9092");
to
prop.put("bootstrap.servers","localhost:9092");
和您的代码
prop.put("value.serializer",
"org.apache.kafka.cpmmon.serialization.StringSerializer");
common
的拼写未正确,正确的软件包是
org.apache.kafka.common.serialization.StringSerializer
在这里发现了两个观察结果
1。
替换
prop.put("bootstrap.server","localhost:9092");
prop.put("bootstrap.servers","localhost:9092");
bootstrap.server- 不正确
bootstrap.server S - 正确
2。
替换
org.apache.kafka.cpmmon.serialization.StringSerializer
org.apache.kafka.common.serialization.StringSerializer