Kafka生产者读取数据文件

时间:2016-02-13 08:42:00

标签: apache-kafka kafka-producer-api

我正在尝试在循环中加载数据文件(以检查统计信息)而不是Kafka中的标准输入。下载Kafka后,我执行了以下步骤:

启动了zookeeper:

bin/zookeeper-server-start.sh config/zookeeper.properties

启动服务器:

bin/kafka-server-start.sh config/server.properties

创建了一个名为" test":

的主题
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

跑到制片人:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
Test1
Test2

听取消费者的意见:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
Test1
Test2

我希望将数据文件传递给Producer,而不是标准输入,消费者可以直接看到它。或者是否有任何kafka生产者而不是使用控制台消费者,我可以使用它来读取数据文件。真的很感激任何帮助。谢谢!

7 个答案:

答案 0 :(得分:4)

您可以通过cat读取数据文件并将其传递给kafka-console-producer.sh。

cat ${datafile} | ${kafka_home}/bin/kafka-console-producer.sh --broker-list ${brokerlist} --topic test 

答案 1 :(得分:4)

如果总有一个文件,你可以使用tail命令然后将它传递给kafka控制台生产者。

但是如果在满足某些条件时创建新文件,您可能需要使用apache.commons.io.monitor来监视创建的新文件,然后重复上面的步骤。

答案 2 :(得分:1)

Kafka有这个内置的File Stream Connector,用于将文件的内容传递给生产者(文件源),或将文件内容定向到另一个目的地(文件接收器)。

我们有bin/connect-standalone.sh从文件中读取,可以在config/connect-file-source.propertiesconfig/connect-standalone.properties中配置。

所以命令将是:

bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties

答案 3 :(得分:0)

您也可以尝试kafkacat实用程序。 Github上的自述文件提供了示例

如果您可以分享哪种工具最适合您,那就太好了。)

KafkaCat自述文件的详细信息:

从stdin读取消息,生成到' syslog' snappy压缩的主题

$ tail -f /var/log/syslog | kafkacat -b mybroker -t syslog -z snappy

答案 4 :(得分:0)

import {Pipe, PipeTransform} from '@angular/core';

@Pipe({name: 'pipename'})
class MockPipe implements PipeTransform {
    transform(value: number): number {
        //Do stuff here, if you want
        return value;
    }
}

请点击此链接:http://grokbase.com/t/kafka/users/157b71babg/kafka-producer-input-file

答案 5 :(得分:0)

使用Linux或Mac的最简单方法是:

kafka-console-producer --broker-list localhost:9092 --topic test < messages.txt

参考: https://github.com/Landoop/kafka-cheat-sheet

答案 6 :(得分:0)

下面的命令当然是最简单的方法。

kafka-console-producer --broker-list localhost:9092 --topic test < message.txt

但是有时无法找到该文件。 例子:

C:\kafka_2.11-2.4.0\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --topic jason-input < C:\data\message.txt

您提供了实际路径,但无法在当前位置找到C,因此会出现错误:找不到文件。我们会认为我们已经给出了实际路径,因此它将进入根目录并从此处开始路径,但是它将在当前位置找到C(root)。

解决方案是在路径中将.. \移至父文件夹。 例如。 您正在执行类似

的命令
C:\kafka_2.11-2.4.0\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --topic jason-input < ..\..\..\data\message.txt
截至目前,我进入Windows文件夹。 .. \将当前目录移至bin文件夹,.. \将当前目录移至kafka ....文件夹,.. \再移至C:。所以现在我的道路开始了。数据,然后是message.txt