0

我想知道在正常关机时已经轮询的事件会发生什么,例如。收到一个 SIGTERM。

  1. 将处理来自轮询的所有事件并提交偏移量,绑定将被取消注册
  2. 将处理当前事件,提交偏移量,丢弃剩余事件,取消注册绑定
  3. ?

如果是选项一,实现选项二行为的最佳/最简单的解决方案是什么?我们使用手动确认。

例如:实现 SmartLifecyle 接口,我们在其中确认我们的事件并对将在 stop() 方法中设置的标志作出反应,该标志将在处理下一个事件时导致 .nack(0) 调用(丢弃所有剩余事件)。由于 KafkamessageListenerContainer#970 中的 isRunning() 条件,下一次轮询不应发生,该条件将通过生命周期接口设置为 false

版本:

Spring Boot 2.3.1、Spring Cloud Horsham.SR6(Spring Cloud Starter Stream Kafka 3.0.6)

谢谢!

4

0 回答 0