【问题标题】:org.apache.kafka.common.config.ConfigException: Missing required configuration "bootstrap.servers" which has no default valueorg.apache.kafka.common.config.ConfigException:缺少所需的配置“bootstrap.servers”,它没有默认值
【发布时间】:2017-11-06 12:46:24
【问题描述】:

Eclipse 中运行我的生产者类时出现此错误: org.apache.kafka.common.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();
    }
  }
}

关于如何修复它的任何指针?

【问题讨论】:

  • 您拼错了属性键 "bootstrap.servers"。为避免以后出现此错误,请改用常量ProducerConfig.BOOTSTRAP_SERVERS_CONFIG
  • 为什么你从不接受任何问题的答案,OP?

标签: apache-kafka kafka-producer-api


【解决方案1】:

只需更改

prop.put("bootstrap.server","localhost:9092");

prop.put("bootstrap.servers","localhost:9092");

在你的代码中

prop.put("value.serializer",
         "org.apache.kafka.cpmmon.serialization.StringSerializer");

common 拼写不正确,正确的包是
org.apache.kafka.common.serialization.StringSerializer

【讨论】:

    【解决方案2】:

    使用以下内容并避免使用硬编码值

    对于

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

    ProducerConfig 将在 org.apache.kafka.clients.producer 包中找到

    【讨论】:

    • 我试过这个例子,但有一个错字:cpmmon => common。我无法编辑帖子,因为少于 8 个字符。
    【解决方案3】:

    这里发现了两个观察结果

    1.

    替换

    prop.put("bootstrap.server","localhost:9092");
    

    通过

    prop.put("bootstrap.servers","localhost:9092");
    

    bootstrap.server -- 不正确

    bootstrap.servers -- 正确

    2.

    替换

    org.apache.kafka.cpmmon.serialization.StringSerializer
    

    org.apache.kafka.common.serialization.StringSerializer
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2019-08-04
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多