微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Micronaut 活性始终未知

如何解决Micronaut 活性始终未知

我目前正在尝试将 livenessreadiness 端点添加到我的服务中,以将其部署在 k8s 上。

我使用的是最新的 micronaut 版本 (2.5.4),并具有以下设置:

application.yml:

micronaut:
  application:
    name: sandBox

endpoints:
  health:
    enabled: true
    sensitive: false
    details-visible: ANONYMOUS

build.gradle:

plugins {
    id("org.jetbrains.kotlin.jvm") version "1.4.32"
    id("org.jetbrains.kotlin.kapt") version "1.4.32"
    id("com.github.johnrengelman.shadow") version "7.0.0"
    id("io.micronaut.application") version "1.5.0"
    id("org.jetbrains.kotlin.plugin.allopen") version "1.4.32"
}

version = "0.1"
group = "com.example"

repositories {
    mavenCentral()
}

micronaut {
    runtime("netty")
    testRuntime("junit5")
    processing {
        incremental(true)
        annotations("com.example.*")
    }
}

dependencies {
    implementation("io.micronaut:micronaut-http-client")
    implementation("io.micronaut:micronaut-management")
    implementation("io.micronaut:micronaut-runtime")
    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
    implementation("javax.annotation:javax.annotation-api")
    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
    runtimeOnly("ch.qos.logback:logback-classic")
    implementation("io.micronaut:micronaut-validation")

    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")

}


application {
    mainClass.set("com.example.ApplicationKt")
}
java {
    sourceCompatibility = JavaVersion.toVersion("11")
}

tasks {
    compileKotlin {
        kotlinoptions {
            jvmTarget = "11"
        }
    }
    compileTestKotlin {
        kotlinoptions {
            jvmTarget = "11"
        }
    }


}

每当我到达端点 localhost:8080/health/liveness 时,我得到的响应是:

{"name":"sandBox","status":"UNKNowN"}

但是,当我拨打 localhost:8080/health/readiness 时,我得到了正确的回复

{"name":"sandBox","status":"UP","details":{"compositediscoveryClient()":{"name":"sandBox","status":"UP"},"diskSpace":{"name":"sandBox","details":{"total":499963174912,"free":384382533632,"threshold":10485760}},"service":{"name":"sandBox","status":"UP"}}}

似乎我遗漏了一些东西,但我在 Micronaut 文档中找不到关于此的任何内容...

解决方法

在评论的帮助下,我设法解决了这个问题。

要使 liveness 工作,您需要添加一个类似于以下形式的 Liveness 实现:

@Singleton
@Liveness
class LivenessIndicator : HealthIndicator {
    override fun getResult(): Publisher<HealthResult> =
        Flowable.just(HealthResult.builder(LIVENESS_NAME).status(HealthStatus.UP).build())

    companion object {
        private const val LIVENESS_NAME = "liveness"
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。