我正在寻找一种在kafka使用者暂停并恢复后重新处理未提交消息的选项。有人可以建议我使用最佳方法吗?选择暂停/恢复而不是停止并重新启动使用者,以避免重新平衡,这是应用程序中错误处理的一部分。
明智地进行重新平衡,可以按预期的那样在暂停/恢复容器中正常工作,但是唯一的事情是恢复后不重新处理未提交的消息。有什么办法可以重新处理那些未提交的消息?
停止和重新启动面临的其他问题是,在错误情况下停止后,一旦启动使用者,使用者就可以提取未提交的消息并重试它,而不会像预期的那样增加偏移量。如果我发布可以成功处理的其他任何消息,则此过程将继续进行,但是在此过程中,由于没有从轮询中的下一个偏移量中查找消息,因此未选择上一个失败/未提交的消息。我们如何处理这种情况?
如果寻求当前偏移量是一种选择,那么有人可以在这种情况下提供任何寻求实现当前偏移量的可行例子吗?
简而言之,提供的配置是:
->处理单个记录而不是批处理。 ->启用提供为false并遵循MANUAL_IMMEDIATE ack模式的自动提交配置。 ->使用定义为1并发的kafkaListenerContainerFactory。
非常感谢您的建议!