Files
go-omni/health/README.md

1.3 KiB
Raw Permalink Blame History

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。完整配置、依赖主动退出和升级方法见 项目指南。