我需要订阅实时消息文件,这些消息可能是从发布子模型的客户端已经存在的MQ设置中发布的。当我订阅MQ的主题以接收消息文件时,是否应该使用Kafka仅获取文件,然后处理它们并使用任何更喜欢的API(如Python)存储在我的文件系统中?我期望如下所示的设置:-
客户的MQ ----> Kafka设置<----用于接收和处理的API(Python)--->文件系统
将文件发布到Kafka后,我是否应该使用Python与Kafka经纪人交谈以接收文件以进行进一步处理?
注意:我不希望消息文件的内容在不同的分区中损坏。相反,我希望完整的文件被发布和使用。
答案 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经纪人交谈以接收文件进行进一步处理吗?
任何语言都可以。