我正在尝试在循环中加载数据文件(以检查统计信息)而不是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生产者而不是使用控制台消费者,我可以使用它来读取数据文件。真的很感激任何帮助。谢谢!
答案 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.properties
和config/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
答案 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