kafka使用官网的java代码 生产者正常使用,消费者接收不到消息

提问说明

1.完全按照官网的java代码来写的,一开始producer还会报错,修改了server.properties里面的listener就好了,kafka用的是kafka_2.11-2.0.0 下面是部分代码

props.put("bootstrap.servers", "192.168.111.146:9092");
        props.put("group.id", "test-consumer-group");
        props.put("enable.auto.commit", "true");
        props.put("auto.commit.interval.ms", "1000");
        props.put("session.timeout.ms", "30000");
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("auto.offset.reset", "earliest");

        ConsumerRecords<String, String> records = kafkaConsumer.poll(Duration.ofMillis(100));
  1. 上面是prop的配置信息 下面poll(100)说是已经过时
    ```
    if(records.isEmpty()){
    }

```
3.会一直显示为空
搞了几天了 也不报错也不接受信息 求救






发表于: 1月前   最后更新时间: 1月前   游览量:171
上一条: 到头了!
下一条: 已经是最后了!

  • 看着没问题,现在找到原因了吗?
    • 没有。。。也没报错 感觉是这里问题 你们都是kafkaConsumer.poll(100)我这边就会显示过时 得用Duration的静态方法
        • Properties props = new Properties();
          props.setProperty("bootstrap.servers", "localhost:9092");
          props.setProperty("group.id", "test");
          props.setProperty("enable.auto.commit", "true");
          props.setProperty("auto.commit.interval.ms", "1000");
          props.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
          props.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
          KafkaConsumer consumer = new KafkaConsumer<>(props);
          consumer.subscribe(Arrays.asList("foo", "bar"));
          while (true) {
          ConsumerRecords records = consumer.poll(Duration.ofMillis(100));
          for (ConsumerRecord record : records)
          System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
          }
            订阅主题了吗?
            订阅主题了吗?
            第一次写markdown格式 不是很会 见谅。。。