kafka java 生产者卡在生产消息中
kafka java producer stuck in producing message
我正在使用 java api 实现 apache kafka 生产者。 Apache Kafka 安装在本地主机上。 Zookeeper 也是 运行,但仍然 producer.send() 函数卡在发送消息中,消息未发布。
我已经创建了 "fast-messages" 个主题。
下面是代码。
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.9,您需要在 broker
中配置 "advertised.host.name"
你能用 producer.flush() 代替 producer.close() 吗? Flush() 阻塞,直到消息被发送到 kafka broker ???除此之外,我没有看到任何奇怪的东西..
代码没有任何问题。只有 api 版本和 kafka 服务器版本不匹配。所以我只更正了 api 版本,现在生产者正在工作。
就我而言,这是因为没有创建主题。
我搞砸了生产者的 bootstrap-servers 配置(使用不同的环境,没有这样的主题)。
修复后它起作用了。
我正在使用 java api 实现 apache kafka 生产者。 Apache Kafka 安装在本地主机上。 Zookeeper 也是 运行,但仍然 producer.send() 函数卡在发送消息中,消息未发布。
我已经创建了 "fast-messages" 个主题。
下面是代码。
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.9,您需要在 broker
中配置 "advertised.host.name"你能用 producer.flush() 代替 producer.close() 吗? Flush() 阻塞,直到消息被发送到 kafka broker ???除此之外,我没有看到任何奇怪的东西..
代码没有任何问题。只有 api 版本和 kafka 服务器版本不匹配。所以我只更正了 api 版本,现在生产者正在工作。
就我而言,这是因为没有创建主题。 我搞砸了生产者的 bootstrap-servers 配置(使用不同的环境,没有这样的主题)。 修复后它起作用了。