【问题标题】:Trouble in starting kafka producer using java使用java启动kafka生产者的麻烦
【发布时间】:2020-06-20 12:35:17
【问题描述】:

您好,我在使用 java 启动 kafka 生产者时遇到了麻烦。如果您知道正确的解决方案,请帮助我。下面是我使用的代码。我已经通过了有关 statck 溢出的各种解决方案。并尝试了其中一些,但没有解决问题。

import java.util.Properties;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;

public class KafkaProducerClass {

    public static void main(String[] args) {

        Properties properties = new Properties();

        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "9092");
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        //Thread.currentThread().setContextClassLoader(null);
        Producer<String, String> producer = new KafkaProducer<>(properties);

        for(int i=0;i<20;i++) {
            ProducerRecord<String, String> producerRecord = new ProducerRecord<>("TestTopic", "Message from java");
            producer.send(producerRecord);
        }
        producer.close();
    }

}

我得到的例外是:

Exception in thread "main" org.apache.kafka.common.KafkaException: Failed to construct kafka producer
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:434)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:298)
    at com.innominds.producer.KafkaProducerClass.main(KafkaProducerClass.java:21)
Caused by: org.apache.kafka.common.config.ConfigException: Invalid url in bootstrap.servers: 9092
    at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:59)
    at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:48)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:408)
    ... 2 more

【问题讨论】:

  • 试试properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); 或者如果在您的本地主机上不起作用,请提供至少一个经纪人的实际地址。

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


【解决方案1】:

properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "9092");

9092 不是您网络中的有效 DNS 名称。

您必须提供有效的 IP 或主机以及要连接的端口


我建议使用更高级别的库,例如 Vertx 或 Quarkus 或 Spring,以获得更简单的配置选项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 2012-01-31
    • 2014-03-23
    相关资源
    最近更新 更多