【问题标题】:How do I print all the polled records from my Kafka cluster to a text file?如何将 Kafka 集群中的所有轮询记录打印到文本文件中?
【发布时间】:2022-01-22 03:22:43
【问题描述】:

在轮询所有消息并尝试将它们附加到文本文件后,文本文件仍然是空白的。

我也试过PrintWriter的写和打印功能,没用。

代码:

PrintWriter recordsFile = new PrintWriter("./recordsFile.txt");

while (some condition) {
    kafkaConsumer.poll(Duration.ofMillis(100)).forEach(consumerRecord -> {
        recordsFile.append(consumerRecord + "\n");
        System.out.println(consumerRecord);
    });
}

recordsFile.flush();
recordsFile.close();

在上面的代码中,记录被打印到控制台,这意味着投票成功。那为什么文件还是空白呢?

我的猜测是 poll 操作启动了一个单独的线程,你认为这里的问题是什么?

请注意,我已经处理了 FileNotFoundException 的可能性,订阅了一个主题等。我省略了这些细节以专注于我面临的问题。

【问题讨论】:

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


    【解决方案1】:

    您应该使用recordsFile.println(consumerRecord.toString())

    但是,您需要在另一个应用程序中执行此操作吗?如果没有,您可以对 Kafka Connect 执行相同操作

    打开config/connect-file-sink.properties,并在此处更改主题和文件名。

    运行bin/connect-standalone.properties config/connect-file-sink.properties

    【讨论】:

    • recordsFile.println(consumerRecord.toString()) 也不起作用。这里我认为问题在于,在将记录附加到文件之前,程序会继续进行下一次轮询迭代。这当然只是猜测。
    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多