Kafka用于消费消息文本文件

时间:2019-03-21 13:48:37

标签: apache-kafka kafka-consumer-api

我需要订阅实时消息文件,这些消息可能是从发布子模型的客户端已经存在的MQ设置中发布的。当我订阅MQ的主题以接收消息文件时,是否应该使用Kafka仅获取文件,然后处理它们并使用任何更喜欢的API(如Python)存储在我的文件系统中?我期望如下所示的设置:-

客户的MQ ----> Kafka设置<----用于接收和处理的API(Python)--->文件系统

将文件发布到Kafka后,我是否应该使用Python与Kafka经纪人交谈以接收文件以进行进一步处理?

注意:我不希望消息文件的内容在不同的分区中损坏。相反,我希望完整的文件被发布和使用。

2 个答案:

答案 0 :(得分:1)

Kafka以(K,V)格式存储消息。具有相似密钥的所有消息将被推送到同一分区中。分区也可以包含带有不同键的消息。但是,只要您的生产者使用一致的密钥(即文件名)将文件的数据推送到文件中,就可以将其存储在单个分区中。

现在,您可以使用任何编程语言将消息推送到Kafka。但是,我建议您使用Java。这是因为,Java客户端可以立即使用Kafka的所有最新功能。据我了解,内部的kafka-python依赖librdkafka库,该库即将发布具有最新功能的新版本。

答案 1 :(得分:1)

  

我希望完整的文件被发布和使用。

Kafka不是不是,它意在用于文件传递...它的默认最大邮件大小仅为1MB(并且将其设置为比5MB大得多,您只会超载代理连接和存储)。

相反,您应该设置一个共享文件系统(例如FTP,NAS,HDFS,S3等),然后仅通过Kafka发送文件的URI ,然后连接到此文件系统在使用者中阅读消息后。然后,您会收到少量消息,而无需处理分区和排序,因为您只需引用存储整个文件的外部系统即可。

  

我应该使用Python与Kafka经纪人交谈以接收文件进行进一步处理吗?

任何语言都可以。