java客户端生产消息,但是服务端不消费消息,求帮助。

zhujiang 发表于: 2019-05-10   最后更新时间: 2019-05-10 18:49:18   2,056 游览

提问说明

三个集群配置如下:(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
没有任何反应!

发表于 2019-05-10
添加评论

1.加个.get()。
producer.send(new ProducerRecord("my-topic", Integer.toString(i), Integer.toString(i))).get() 试试。

  1. 你的listener配置的是啥。为什么一个ip一个localhost。

加了 get( )不行

listeners=PLAINTEXT://:9093

请问 listener 这个地方应该怎么写?

半兽人 -> zhujiang 5年前

写了.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.

半兽人 -> zhujiang 5年前

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

半兽人 -> zhujiang 5年前

你这越来越...麻烦了
你所有需要连kafka的机器,都要配置my-topic-0 hosts。能ping通

为什么我这个环境这么麻烦啊,我看别人的帖子都很简单呢。。。

半兽人 -> zhujiang 5年前

你配内网ip就好了。不是主机名。

你的答案

查看kafka相关的其他问题或提一个您自己的问题