Apache kafka 高级卡夫卡消费api不起作用

Apache kafka 高级卡夫卡消费api不起作用,apache-kafka,kafka-consumer-api,kafka-producer-api,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,我设置了一个单节点kafka,并尝试了一个简单的发布/订阅模式,如下所示: 我在笔记本电脑上通过代码生成一些信息: Properties props = new Properties(); props.put("bootstrap.servers", "192.168.23.152:9092"); props.put("acks", "all"); props.put("retries", 0); props.put("batch.size", 16384

我设置了一个单节点kafka,并尝试了一个简单的发布/订阅模式,如下所示:

我在笔记本电脑上通过代码生成一些信息:

    Properties props = new Properties();
    props.put("bootstrap.servers", "192.168.23.152:9092");
    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 < 10; i++)
        producer.send(new ProducerRecord<String, String>("tp3", Integer.toString(i), "hello " + Integer.toString(i)));

    producer.close();
Properties=newproperties();
道具放置(“bootstrap.servers”,“192.168.23.152:9092”);
道具放置(“阿克斯”、“全部”);
道具放置(“重试”,0);
道具放置(“批量大小”,16384);
道具放置(“玲儿小姐”,1);
props.put(“buffer.memory”,33554432);
put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
制作人=新卡夫卡制作人(道具);
对于(int i=0;i<10;i++)
producer.send(新ProducerRecord(“tp3”,Integer.toString(i),“hello”+Integer.toString(i));
producer.close();
我还写了一个简单的消费者:

    Properties props = new Properties();
    props.put("bootstrap.servers", "192.168.23.152:9092");
    props.put("group.id", "g1");
    props.put("client.id","client1");
    props.put("enable.auto.commit", "true");
    props.put("auto.commit.interval.ms", "1000");
    props.put("auto.offset.reset", "latest");
    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");
    KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
    consumer.subscribe(Arrays.asList("tp3"));
    while (true) {
        ConsumerRecords<String, String> records = consumer.poll(100);
        for (ConsumerRecord<String, String> record : records)
            System.out.printf("offset = %d, key = %s, value = %s", record.offset(), record.key(), record.value());
        TimeUnit.SECONDS.sleep(1000);
    }
Properties=newproperties();
道具放置(“bootstrap.servers”,“192.168.23.152:9092”);
道具放置(“组id”、“g1”);
props.put(“client.id”、“client1”);
props.put(“enable.auto.commit”、“true”);
props.put(“auto.commit.interval.ms”,“1000”);
道具放置(“自动偏移重置”、“最新”);
props.put(“session.timeout.ms”,“30000”);
put(“key.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”);
put(“value.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”);
卡夫卡消费者=新卡夫卡消费者(道具);
consumer.subscribe(Arrays.asList(“tp3”));
while(true){
ConsumerRecords记录=consumer.poll(100);
对于(消费者记录:记录)
System.out.printf(“偏移量=%d,键=%s,值=%s”,record.offset(),record.key(),record.value());
时间单位。秒。睡眠(1000);
}
但消费者没有检索到任何内容

有人能给我解释一下发生了什么事吗? 我确信制作人工作得很好,因为我使用console命令来检索消息,它工作得很好(我在这里附上经验证的图片)

感谢您的帮助。(:(

根据卡夫卡:

为什么我的消费者从未获得任何数据?

默认情况下,首次启动使用者时,它会忽略主题中的所有现有数据,并且只会使用在使用者启动后输入的新数据。如果是这种情况,请尝试在使用者启动后发送更多数据。或者,您可以通过将auto.offset.reset设置为“earlime”来配置使用者对于0.9中的新消费者,对于旧消费者为“最小”


如果人们想知道这个版本,它是2.11-0.10.0.0(如屏幕截图所示)。我也在为同样的事情而挣扎。制作人工作得很好,但消费者API不想让我做任何事情。我运行的代码与您基本相同,只是我使用了localhost和“enable.auto.commit”错误。我正在测试一些配置参数。我将轮询时间增加到1000和5000,并且在运行消费者时,它实际上可以工作-有时会出现一些我还没有确定的时间问题。我通过Vpn连接了它们(我们的Vpn策略禁止多个端口),我还没有被授予访问9092端口的权限,所以我必须使用sock代理进行连接,我认为这是主要原因,我的疑问只是“为什么我在许多其他案例中使用sock代理,并且它们运行良好:(:(但是Kafkai失败了如果您想知道是否存在vpn/防火墙问题,请尝试localhost,看看它是否工作。tks@Yngvar Kristiansen,我尝试过了,它工作得非常好