spring-kafka监听器关闭

时间:2018-12-20 14:43:38

标签: spring-kafka

我正在尝试验证我关闭应用程序时是否正常关闭了kafka-listeners(以优雅的方式或以某种激进的方式)。有人可以指出我要处理的地方吗?我当时在查看destroyclose方法,但无法找到kafka客户端注销实际发生的位置。

如果注销花费太多时间会怎样?还是其他一些Spring bean shutdown钩花了太多时间?

对于当前正在处理事件,这实际上意味着什么?如果碰巧完成了工作,他们可以在停机期间进行补偿吗?

我正在使用spring-kafka 1.3.5版本。

1 个答案:

答案 0 :(得分:2)

当前的1.3.x版本是1.3.8;您应该升级。 1.3.9将于1月初发布。

当您stop()使用侦听器容器时,该容器将有序停止并处理pol()先前返回的所有记录(但不会进行进一步的轮询)。但是,您应确保侦听器将在shutdownTimeout(默认10秒,但可配置)内处理所有剩余记录。 stop()操作将在该时间段阻塞,等待容器停止。

对于更现代的版本(2.2.x,当前为2.2.2),您可以使用ApplicationListener@EventListener来消耗ContainerStoppedEvent