我正在使用java api实现apache kafka producer。 Apache Kafka安装在localhost上。 Zookeeper也在运行,但仍然生成了producer.send()函数,发送消息并且消息未发布。
我已经创建了#34;快速消息"主题。
以下是代码。
package com.hsahu.kafka.producer;
import java.util.Properties;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
public class KafkaProducerExample {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 0);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
try {
producer.send(new ProducerRecord<String, String>("fast-messages", "This is a dummy message"));
} catch(Exception ex) {
System.out.println(ex);
}
System.out.println("message publisher");
producer.close();
}
}
我该怎么办?是我的代码错误或任何属性设置不正确或丢失?
答案 0 :(得分:4)
代码中没有任何问题。只有api版本和kafka服务器版本不匹配。所以我只更正了api版本,现在制作人正在工作。
答案 1 :(得分:1)
以下测试
如果版本高于0.9,则需要配置&#34; advertised.host.name&#34;在经纪人
答案 2 :(得分:0)
您可以尝试使用producer.flush()而不是producer.close()。 Flush()块直到消息被发送到kafka经纪人???除了那个我没有看到任何奇怪的东西..
答案 3 :(得分:0)
就我而言,这是因为未创建主题。 我搞混了生产者的 bootstrap-servers 配置(使用了不同的env,没有这样的主题)。 修复它起作用后。