1.3 KiB
1.3 KiB
health
health 提供与网络层无关的存活和就绪 Handler。业务项目只需要注册依赖探针,路由仍通过 omni.App 或项目自己的 transport 注册:
checker, err := health.New(health.Probe{
Name: "database",
Check: db.PingContext,
})
if err != nil {
return err
}
app.GET("/health/live", checker.LivenessHandler())
app.GET("/health/ready", checker.ReadinessHandler())
从 v0.13.0-preview 起,两个 Handler 默认都使用 App 响应模板/自定义 Encoder。就绪成功使用项目成功码和提示;失败以 NOT_READY 查询项目错误目录,返回项目字段、业务码和公开提示。HTTP 状态保持 200/503,不受业务错误 HTTP 200 策略影响。底层探针原因不会直接放入 HTTP 响应,保留到失败错误链供日志使用;内部 Checker.Check 仍提供检查错误。
ReadinessHandler(health.WithRawResponse()) 只返回健康数据,不包公共体。health.WithShutdownContext(ctx) 让服务开始退出时立即标记为未就绪;存活检查不受影响。超时依赖 Probe.Check 自己响应 context 取消,框架不会遗留 goroutine 去强行打断不合作的检查。
生成项目的开关、路径和响应模式统一配置在 server.endpoints,不需要修改 Handler。完整配置、依赖主动退出和升级方法见 项目指南。