我有一个服务,可监听Kafka主题并通过将事件持久化在数据存储中来处理这些事件(该存储实际上维护计数和其他聚合)。我不希望重复处理同一则消息两次,否则,它将破坏存储中的数据。换句话说,消息处理需要是幂等的。我们确实为此提供了一些解决方案,但是从性能的角度来看,这有点昂贵。
扩展服务时,通常会重新分区,最终导致丢弃的消息。现在,这些消息可能已经被处理,并且在触发重新平衡之前,数据存储区中的计数会增加。
是否可以找到由于重新平衡或其他原因而丢弃了来自Kafka的邮件? ConsumerRecord中是否有任何元数据可以帮助您解决问题?
谢谢。