我有一个kafka集群,它根据某个源中的数据更改从该源接收消息。在某些情况下,这些消息是要在将来处理的。所以我有两个选择:
使用所有消息并将未来的消息以不同的主题(主题名称中包含日期)发回Kafka,并使用storm拓扑查找包含该日期名称的主题。这将确保消息只在指定的日期被处理。
将它存储在一个单独的数据库中,并构建一个调度器,该调度器只在将来的某个日期读取消息并发布到kafka。
选项1更容易执行,但我的问题是:Kafka是一个持久的数据存储吗?有人和Kafka一起做过这种事吗?设计上有什么大洞吗?
1条答案
按热度按时间zed5wv101#
您可以配置邮件在kafka中的停留时间(log.retention.hours)。
但请记住,kafka是用来作为生产者和消费者之间的“实时缓冲区”,而不是作为持久的数据存储。我不认为kafka+storm适合您的用例。为什么不在分布式文件系统中编写消息,并安排一个作业(mapreduce、spark…)来处理这些事件呢?