Spring integration 通过拒绝确认重读卡夫卡主题的信息

Spring integration 通过拒绝确认重读卡夫卡主题的信息,spring-integration,apache-kafka,Spring Integration,Apache Kafka,我正在使用spring-integration-Kafka实现带有自定义确认机制的Kafka消费者 使用了来自的代码 我试图实现的是,当抛出异常时,不应将确认发送回Kafka(即不应执行偏移量提交),因此下一个fromKafka.receive(10000)方法调用将返回与前一个相同的消息 但我面临一个问题:即使确认没有发送给卡夫卡,消费者也不知怎么地知道下一条消息的偏移量,并继续阅读新消息,尽管偏移量主题中的偏移量值保持不变 如何使使用者在出现某些故障时重新读取消息?目前不支持重新获取故障消息

我正在使用
spring-integration-Kafka
实现带有自定义确认机制的Kafka消费者

使用了来自的代码

我试图实现的是,当抛出异常时,不应将确认发送回Kafka(即不应执行偏移量提交),因此下一个
fromKafka.receive(10000)
方法调用将返回与前一个相同的消息

但我面临一个问题:即使确认没有发送给卡夫卡,消费者也不知怎么地知道下一条消息的偏移量,并继续阅读新消息,尽管偏移量主题中的偏移量值保持不变


如何使使用者在出现某些故障时重新读取消息?

目前不支持重新获取故障消息

您可以做的一件事是在消息驱动适配器的下游添加重试(例如,使用请求处理程序重试建议)

通过不确认,消息将在重新启动后传递,但不会在当前实例化期间传递

由于消息已预回迁到适配器中,您可以做的一件事是检测故障、停止适配器、排空预回迁的消息并重新启动

您可以注入一个定制的
ErrorHandler
来停止适配器,并向下游流发出信号,表示它应该忽略这些消息

编辑


现在有一个。

谢谢,我将使用
错误处理程序来尝试这种方法。但无论如何,适配器如何知道下一条消息的偏移量呢?它是否在内部存储当前偏移量?@gary在最新的春季卡夫卡中,当我们进行手动确认时,是否有方法重新蚀刻失败的消息而不是前进?只是为了避免重新启动适配器。我尝试了Seek,但它不会返回到失败的偏移。使用spring kafka 2.1.4与集成kafka 3.0.3是的,现在有一个。目前的版本是2.1.8。