我被困在一个典型的用例或场景中,在这种情况下,我不确定Kafka的行为。
SCENERIO:我正在使用带有Spring Boot的Spring Kafka。在我的应用程序中,我有一个Rest端点,它将从主题的开头读取所有消息,以检查消息是否重复,如果不重复则写入主题。
当部署了同一微服务的多个实例并将偏移移动到seekFromBegining操作时,我对应用程序的行为感到困惑。
我想到的几个问题是:
do reading from beginning of a topic (with the help of seek) block the topic ?
If Yes. then how to solve this typical use case where we have to validate for the
duplication of message before writing to the topic.
使用数据库不是解决方案,因为它将占用大量资源。并使应用程序变慢。
谢谢大家
答案 0 :(得分:0)
听起来像您需要Log Compaction功能:
日志压缩可确保Kafka始终为单个主题分区的数据日志中的每个消息键至少保留最后一个已知值。
因此,当您指定一些唯一的message key
时,分区中最多只能有一个。而且,您根本不需要在存储之前先阅读主题。