我有一個場景,我必須定期呼叫 API 來接收健康狀態。
如果我使用一段時間會怎樣?
while (true)
{
// API call
var health = _client.GetHealth(1).Result;
if (health)
{
some other work
}
Thread.Sleep(2000);
}
uj5u.com熱心網友回復:
這已經可以通過Health Checks 中間件獲得。健康檢查服務會定期檢查注冊的探針,看是否一切正常。可以通過 API 端點記錄或公開健康狀態。
有多種探頭可用。開源AspNetCore.Diagnostics.HealthChecks庫提供了從遠程 API 到各種資料庫產品、云服務等所有內容的探測。它還提供一個健康檢查儀表板,顯示詳細的健康檢查歷史記錄。
使用運行狀況檢查很容易,因為它已包含在 Web 應用程式模板中。
注冊它需要將以下內容添加到Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddHealthChecks();
}
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/health");
});
}
MapHealthChecks在/health端點公開基本狀態。要檢查遠程 API,您可以添加AspNetCore.HealthChecks.Uris包并使用AddUrlGroup多載之一:
public void ConfigureServices(IServiceCollection services)
{
services.AddHealthChecks()
.AddUrlGroup(new Uri("http://httpbin.org/status/200"));
}
uj5u.com熱心網友回復:
您可以使用異步編程,
public async Task HealthCheckAsync()
{
while (true)
{
// API call
var health = await _client.GetHealth(1);
if (health)
{
some other work
}
await Task.Delay(2000);
}
}
除了在等待來自服務器的回應或等待下一個周期時不會阻塞主執行緒之外,它的作業方式相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/353959.html
標籤:C# asp.net核心 asp.net-web-api 健康检查
上一篇:在C#中根據浮點數驗證整數值
