Kafka Consumer无法通过Java阅读主题数据

时间:2019-03-07 10:59:39

标签: java apache-kafka kafka-consumer-api

我正在将输入的JSON数据发送到Kafka主题。通过使用以下命令,我可以在kafka使用者中看到相同的JSON数据。

.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic mytopic --from-beginning

案例1: 但是,当我尝试从kafka使用者(java)读取记录时,在Java控制台中没有任何记录。我已经尝试过此链接https://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html中给出的示例

案例2: 如果我从生产者(命令窗口)发送任何消息,则在消费者(命令窗口)中获得相同的消息。并能够在Java控制台中看到相同的记录。此方案正在工作。

如果我通过java程序将数据提交给主题。然后,相同的JSON数据出现在使用者(命令窗口)中。但是没有进入Java控制台。Case1无法正常工作。
Case2在正常工作。请让我知道需要进行任何配置吗?

3 个答案:

答案 0 :(得分:0)

您需要设置ConsumerConfig.AUTO_OFFSET_RESET_CONFIG以便从头开始读取。

kafkaConsumerProperties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,"earliest"); 

还要确保您没有使用相同的使用者组ID运行不同的使用者进程,因为一个分区中的数据可能是从一个进程中读取的,而另一个分区则看不到任何东西。

答案 1 :(得分:0)

假定生产者和消费者代码正确。

  • 停止所有消费者。
  • 重置您的消费群体
  

$ KAFKA_HOME / bin / kafka-consumer-groups.sh --bootstrap-服务器   本地主机:9092 --group group_name --topic topic_name --reset-offsets   -最早-执行

  • 现在开始您的消费者

这应该可以解决您的问题。

以下是一些卡夫卡消费者的财产:

    bootstrap.servers: 'localhost:9092'
    group.id: 'group_id'
    auto.offset.reset: 'earliest'
    key.deserializer: 'org.apache.kafka.common.serialization.*' //Replace * with class
    value.deserializer: 'org.apache.kafka.common.serialization.*'

谢谢

答案 2 :(得分:0)

您需要确保您没有在最后发送空行,而仅消耗latest-与上述一样使用auto.offset.reset: 'earliest'properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

然后, consumer.seekToBeginning(consumer.assignment());确定。