Akka Management自定义Liveness存活检测配置不生效问题求助
问题排查与解决方案
以下是遗漏的配置和错误点,逐一修正即可:
- 1. 缺失健康检查启用配置
Akka默认不会自动启用自定义存活检查,需要额外添加启用配置:akka { management { # 首先要确保akka management的http端点启用 http { enabled = true hostname = "0.0.0.0" port = 8558 } health-checks { # 启用存活检查 liveness.enabled = true liveness-checks { cluster-liveness = "ie.fd.cpoi.acl.liveness.LivenessCheck" } } } } - 2. 接口实现与依赖问题
当前实现的是Scala函数类型,需要确认两点:- 已引入对应Scala版本的
akka-management-health-checks依赖,未引入的话Akka不会识别自定义检查类; - 若没有使用Akka依赖注入框架,健康检查类需要提供无参构造,或者显式声明ActorSystem可注入,否则Akka无法实例化检查类。修正后的代码示例:
package ie.fd.cpoi.acl.liveness import akka.actor.ActorSystem import org.slf4j.{Logger, LoggerFactory} import scala.concurrent.Future // 无参构造示例,在类内部获取ActorSystem,或者用Akka DI注入 class LivenessCheck() extends (() => Future[Boolean]) { private val system = ActorSystem("liveness-check-system") val logger: Logger = LoggerFactory.getLogger("LivenessCheck") override def apply(): Future[Boolean] = { logger.info("此处调用依赖系统接口,若依赖异常则需要重启应用") Future.successful(false) } } - 已引入对应Scala版本的
- 3. 配置加载校验
确认配置放在application.conf文件的根层级,没有被其他配置覆盖,应用启动时加载的是正确的配置文件。
修正后重启应用,日志中会打印加载的存活检查包含自定义的类。
内容的提问来源于stack exchange,提问作者Karan Khanna
相关产品推荐
相关产品推荐

