介绍
小编给大家分享一下怎么给asp.net核心写个简单的健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
<强>介绍强>
健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是码头工人还是k8还是现在大多数的服务注册发现大多都提供了健康检查机制来检测应用的健康状态,如果应用本身就提供一个健康检查的机制会更友好,更能真实的反映出应用的健康状态。
我们的开发环境虚拟机配置有点低,所以有时候虚拟机会卡死,导致接口无响应,有时可能有些服务启动有问题会挂掉,所以需要一个简单的健康检查机制去检查应用的健康状态来第一时间知道应用出现异常。
<强>健康检查扩展实现强>
实现源码
,, public static IApplicationBuilder UseHealthCheck(却;能够IApplicationBuilder applicationBuilder) {才能 ,,return UseHealthCheck (applicationBuilder, new PathString (“/api/health")); ,,} public 才能static IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder applicationBuilder,, string 路径) {才能 ,,return UseHealthCheck (applicationBuilder, new PathString(路径)); ,,} public 才能static IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder applicationBuilder,, PathString 路径) {才能 ,才能applicationBuilder.Map(路径,builder =祝辞,builder.Use ( ,,,(下)背景下,,,=比; ,,,{ ,,,,context.Response.StatusCode =, 200; ,,,,return context.Response.WriteAsync (“healthy"); ,,,})); ,,return applicationBuilder; ,,} public 才能static IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder applicationBuilder,, string 路径,Func, checkFunc) {才能 ,,return UseHealthCheck (applicationBuilder, new PathString(路径),serviceProvider =祝辞,Task.FromResult (checkFunc (serviceProvider))); ,,} public 才能;static  IApplicationBuilder UseHealthCheck(却;能够IApplicationBuilder applicationBuilder,, string 路径, ,,Func 祝辞,checkFunc) {才能 ,,return UseHealthCheck (applicationBuilder, new PathString(路径),checkFunc); ,,} public 才能static IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder applicationBuilder,, PathString 路径,Func , checkFunc) {才能 ,,if (checkFunc ==, null) ,,{ ,,,checkFunc =, serviceProvider =祝辞,真的; ,,} ,,return UseHealthCheck (applicationBuilder、,路径,serviceProvider =祝辞,Task.FromResult (checkFunc (serviceProvider))); ,,} public 才能static IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder applicationBuilder,, PathString 路径,Func 祝辞,checkFunc) {才能 ,,if (checkFunc ==, null) ,,{ ,,,checkFunc =, serviceProvider =祝辞,Task.FromResult(真正的); ,,} ,才能applicationBuilder.Map(路径,builder =祝辞,builder.Use ( ,,,async (下)背景下,,,=比; ,,,{ ,,,,试一试 ,,,,{ ,,,,,var healthy =, await checkFunc.Invoke (context.RequestServices); ,,,,,if (健康) ,,,,,{ ,,,,,,context.Response.StatusCode =, StatusCodes.Status200OK; ,,,,,,await context.Response.WriteAsync (“healthy"); ,,,,,} ,,,,, ,,,,,{ ,,,,,,context.Response.StatusCode =, StatusCodes.Status503ServiceUnavailable; ,,,,,,await context.Response.WriteAsync (“unhealthy"); ,,,,,} ,,,,} ,,,,catch (Exception 交货) ,,,,{ ,,,,,context.RequestServices.GetService () .CreateLogger (“HealthCheck") . error (ex); ,,,,,context.Response.StatusCode =, StatusCodes.Status503ServiceUnavailable; ,,,,,await context.Response.WriteAsync (“unhealthy"); ,,,,} ,,,})); null null null null null null null null null null null null null null null null null null null null null null 怎么给asp.net核心写个简单的健康检查