提问说明
三个集群配置如下:(zk用的自带的)
s1.properties
broker.id=1
port=9093
zookeeper.connect=127.0.0.1:2181
s2.properties
broker.id=2
port=9094
zookeeper.connect=127.0.0.1:2181
s3.properties
broker.id=3
port=9095
zookeeper.connect=127.0.0.1:2181
没有报错信息,直接卡住不动了!
Properties props = new Properties();
props.put("bootstrap.servers", "111.231.54.216:9093,111.231.54.216:9094,111.231.54.216:9095");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
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");
Producer<String, String> producer = new KafkaProducer<>(props);
for (int i = 0; i < 100; i++)
try {
producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i)));
} catch (Exception e) {
System.out.println(e);
}
producer.close();
运行 kafka-console-consumer.sh --bootstrap-server localhost:9093 --from-beginning --topic my-topic
没有任何反应!
1.加个.get()。("my-topic", Integer.toString(i), Integer.toString(i))).get() 试试。
producer.send(new ProducerRecord
加了 get( )不行
listeners=PLAINTEXT://:9093
请问 listener 这个地方应该怎么写?
写了.get()是不是会提示报什么错误了?
listeners=PLAINTEXT://111.231.54.216:9093
这样,消费者命令也改成
kafka-console-consumer.sh --bootstrap-server 111.231.54.216:9093 --from-beginning --topic my-topic
按照你说的 配置成 listeners=PLAINTEXT://111.231.54.216:9093
报错如下:
org.apache.kafka.common.KafkaException: Socket server failed to bind to 111.231.54.216:9093: Cannot assign requested address.
111.231.54.216这个是你的外网ip,还是内网?如果外网ip无法映射,换成内网的,默认外网就可以用。
按照你说的 改成内网了
客户端报错如下
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for my-topic-0:120001 ms has passed since batch creation
你这越来越...麻烦了
你所有需要连kafka的机器,都要配置my-topic-0 hosts。能ping通
为什么我这个环境这么麻烦啊,我看别人的帖子都很简单呢。。。
你配内网ip就好了。不是主机名。
你的答案