使用Java启动Kafka Producer失败求助:附代码及异常信息
解决Kafka Producer初始化失败问题
看你抛出的异常信息,核心错误是 Invalid url in bootstrap.servers: 9092,这直接点出了问题所在——bootstrap.servers的配置格式不符合Kafka客户端要求。
问题根源
Kafka的bootstrap.servers配置必须是主机名/IP地址 + 端口的完整格式,你只写了端口9092,客户端无法识别这个无效地址,导致Producer实例初始化失败。
修复方案
修改配置代码,把bootstrap.servers改成完整的地址格式即可:
本地运行场景(Kafka在本机)
如果Kafka服务是在你的本地机器上启动的,改成:
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
远程服务器场景
如果Kafka部署在远程服务器,替换成对应的服务器IP或主机名,比如:
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.1.100:9092");
要是有多个Kafka Broker节点,用逗号分隔多个地址:
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "broker1:9092,broker2:9092,broker3:9092");
额外验证点
修复配置后,还可以确认以下几点确保Producer正常工作:
- 确认Kafka服务已经启动,且监听端口确实是
9092(可以用netstat -an | grep 9092或lsof -i :9092命令检查) - 若连接远程服务器,确保本机和Kafka服务器之间网络连通,端口未被防火墙拦截
- 确认
TestTopic已存在,或者你的Kafka集群配置允许自动创建主题
修改后的完整代码示例:
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(); // 修正为完整的bootstrap地址 properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); Producer<String, String> producer = new KafkaProducer<>(properties); for(int i=0;i<20;i++) { ProducerRecord<String, String> producerRecord = new ProducerRecord<>("TestTopic", "Message from java " + i); producer.send(producerRecord); } producer.close(); } }
内容的提问来源于stack exchange,提问作者Pluto_rider
相关产品推荐
相关产品推荐

