我已经学习了一个月的Apache Kafka了。但现在我卡在了一个点上。我的使用情况是,在不同的机器上运行两个或更多的消费者进程。我进行了一些测试,向Kafka服务器发布了10,000条消息。然后在处理这些消息时,我关闭了其中一个消费者进程并重新启动了它。消费者将已处理的消息写入文件中。因此,在消耗完成后,文件显示超过10k条消息。所以有些消息被重复了。
在消费者进程中,我已禁用自动提交。消费者手动按批次提交偏移量。例如,如果已将100条消息写入文件,则消费者会提交偏移量。当单个消费者进程运行并崩溃并恢复时,通过这种方式避免了重复。但是当运行多个消费者并且其中一个崩溃并恢复时,它会将重复的消息写入文件。
有没有有效的策略来避免这些重复的消息?