如何解决Kafka:元数据异常中不存在主题
我使用 Spring KafkaTemplate 功能在 Kafak-topic 中发送消息。
配置是:
@Bean
public KafkaAdmin createKafkaAdmin() {
Map<String,Object> configs = new HashMap<>();
configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:2181");
return new KafkaAdmin(configs);
}
@Bean
public ProducerFactory<String,String> producerFactory() {
Map<String,Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:2181");
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class);
return new DefaultKafkaProducerFactory<>(configProps);
}
@Bean
public KafkaTemplate<String,String> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
然后我尝试发送消息:
@Autowire
private KafkaTemplate<String,String> kafkaTemplate;
ListenableFuture<SendResult<String,String>> future =
kafkaTemplate.send("waiting_for_ack",key,value);
但我收到以下异常:
TimeoutException: Topic waiting_for_ack not present in metadata after 60000 ms.
目标主题存在,其中能够确定,通过:
./kafka-topics.sh --zookeeper localhost:2181 --list _consumer_offsets
waiting_for_ack
我做错了什么,我用什么方法来确定这个异常的原因?
解决方法
您需要在 BOOTSTRAP_SERVERS_CONFIG 属性中指定代理 url 而不是 zookeeper url。您可以尝试在
server.properties
在 kafka 安装下的 /config
文件夹中可用。通常是
bootstrap.servers=localhost:9092
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。