我通过以固定大小的批量发送数据,将数据从数据库导出到Kafka。如果一批产品出现故障,我只需重新发送整批产品。我的想法不是弄清楚哪些消息被正确导入以处理某些消息被导入两次的事实。
Kafka实现了这个压缩步骤,其中来自具有相同消息密钥的所有消息仅保留最新消息。压缩将删除所有重复的消息,因为所有消息都有唯一的密钥。
有没有办法只从Kafka主题读取到压缩完成的程度?如果我不能在最近的消息之前阅读,只要我不读取任何消息两次,这没关系。
答案 0 :(得分:2)
AFAIK你不能强迫Kafka压实,所以唯一的选择是等到压实发生(这可能非常棘手)。
我认为处理这种情况的更好方法是让您的消费者具有幂等性 - 幂等消费者并不关心您在流中有多少重复,结果保持不变。