spring-kafka监听关闭
spring-kafka listener shutdown
我正在尝试验证当我关闭我的应用程序时 kafka-listeners 是否正常关闭(优雅地或以某种积极的方式)。有人可以指出我处理它的地方吗?我正在查看 destroy
和 close
方法,但我找不到 kafka 客户端注销实际发生的位置。
如果注销时间太长会怎样?或者如果其他 spring bean shutdown hook 花费太多时间?
还有它对当前处理事件的实际含义是什么?如果他们碰巧完成了他们的工作,他们可以在关闭期间提交偏移量吗?
我正在使用 spring-kafka 1.3.5 版本。
当前1.3.x版本为1.3.8;你应该升级。 1.3.9 将于一月初发布。
当您 stop()
监听器容器时,容器将以有序的方式停止并处理之前由 pol()
返回的任何记录(但不会进行进一步的轮询)。但是,您应该确保您的侦听器将在 shutdownTimeout(默认 10 秒,但可配置)内处理任何剩余记录。 stop()
操作将在那个时候阻塞,等待容器停止。
使用更现代的版本(2.2.x,当前为 2.2.2),您可以使用 ApplicationListener
或 @EventListener
来消耗 ContainerStoppedEvent
。
我正在尝试验证当我关闭我的应用程序时 kafka-listeners 是否正常关闭(优雅地或以某种积极的方式)。有人可以指出我处理它的地方吗?我正在查看 destroy
和 close
方法,但我找不到 kafka 客户端注销实际发生的位置。
如果注销时间太长会怎样?或者如果其他 spring bean shutdown hook 花费太多时间?
还有它对当前处理事件的实际含义是什么?如果他们碰巧完成了他们的工作,他们可以在关闭期间提交偏移量吗?
我正在使用 spring-kafka 1.3.5 版本。
当前1.3.x版本为1.3.8;你应该升级。 1.3.9 将于一月初发布。
当您 stop()
监听器容器时,容器将以有序的方式停止并处理之前由 pol()
返回的任何记录(但不会进行进一步的轮询)。但是,您应该确保您的侦听器将在 shutdownTimeout(默认 10 秒,但可配置)内处理任何剩余记录。 stop()
操作将在那个时候阻塞,等待容器停止。
使用更现代的版本(2.2.x,当前为 2.2.2),您可以使用 ApplicationListener
或 @EventListener
来消耗 ContainerStoppedEvent
。