Kafka Consumer只提供第一条消息

时间:2017-11-22 14:02:34

标签: java kafka-consumer-api

我是卡夫卡的新手。我正在使用Kafka 0.9.0.0客户端的java。在使用特定主题的数据时,我每次都会收到相同的消息(这是第一次发布的),当我启动生产者 - 消费者java项目时。

我的要求是生成一些消息并使用它并检查两条消息是否相同。

以下是我为Kafka Consumer使用的代码: -

KafkaConsumer<String, String> newConsumer = new KafkaConsumer<String, String>(properties);
newConsumer.subscribe(Collections.singletonList(props.getProperty("monitoring.topic")));

String consumerRecord = "";
ConsumerRecords<String, String> consumerRecords = newConsumer.poll(120000);

for (ConsumerRecord<String, String> record : consumerRecords) {
    logger.info("Found message  for  {} {} {}", adapter, record.key(), record.value());
    System.out.println("consumerMessage : " + record.value());
    JSONObject jsonConsumerMessage = (JSONObject) (parser.parse(record.value()));

    Long offset = record.offset();
    System.out.println("Offset of this record is " + offset);
    String UUIDProducer = message.get("UUID").toString();

    String UUIDConsumer = jsonConsumerMessage.get("UUID").toString();
    System.out.println("UUIDProducer :  " + UUIDProducer);
    System.out.println("UUIDConsumer :  " + UUIDConsumer);
    if (UUIDProducer.equals(UUIDConsumer)) {
        return true;
    } else
        return false;
}

注意: - 我可以通过命令行使用最新消息。

有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

我的愚蠢错误是我在for循环中返回true和false值。一旦第一条消息来自主题,它就会导致循环出现。