spring-kafka - spring-kafka 监听器关闭
问题描述
我正在尝试验证当我关闭我的应用程序时(优雅地或以某种激进的方式),kafka-listeners 是否已正常关闭。有人可以指出我处理它的地方吗?我正在查看destroy
和close
方法,但我无法找到 kafka 客户端注销实际发生的位置。
如果注销时间过长怎么办?或者如果其他一些spring bean关闭钩子需要太多时间?
还有它对当前处理事件的实际意义是什么?如果他们碰巧完成了他们的工作,他们可以在关闭期间提交补偿吗?
我正在使用 spring-kafka 1.3.5 版本。
解决方案
当前的 1.3.x 版本是 1.3.8;你应该升级。1.3.9 将于 1 月初发布。
当您stop()
成为侦听器容器时,容器将以有序的方式停止并处理先前由 a 返回的任何记录pol()
(但不会进行进一步的轮询)。但是,您应该确保您的侦听器将在 shutdownTimeout (默认为 10 秒,但可配置)内处理任何剩余的记录。该stop()
操作将在这段时间内阻塞,等待容器停止。
对于更现代的版本(2.2.x,目前是 2.2.2),您可以使用ApplicationListener
or@EventListener
来使用ContainerStoppedEvent
.
推荐阅读
- spring-boot - 错误:不可解析的父 POM:无法传输工件 org.springframework.boot:spring-boot-starter-parent:pom
- classification - 任何深度学习模型用于图像中的实例分类,而不是边界框?
- css - Clip-path alternatives for reveal text
- python - 如何将数据框列表除以值列表?
- python - 关于 UserList __init__, ( [:], isinstance ) 的问题
- javascript - Charts.js Y 轴整数
- active-directory - Azure AD 提取脚本
- javascript - 变量不更新,除非我记录它
- nginx - 如何在 NGINX 中为 React 应用程序设置不同的上下文路径
- html - IE11:Flex 容器内的绝对 DIV 位置保持在流动之外