💫
RetryPattern Sample
シンプルなリトライパターンのサンプルソースです
C#です
using System;
using System.Net.Http;
using System.Threading.Tasks;
class RetryExample
{
private int MAX_RETRY = 3;
static async Task Main(string[] args)
{
var retryExample = new RetryExample();
await retryExample.RetryRequest();
}
async Task RetryRequest(int retryCount = 0)
{
int retryDelaySeconds = 1;
try
{
// HttpClient を作成
using (HttpClient client = new HttpClient())
{
// GET リクエストを送信
HttpResponseMessage response = await client.GetAsync("https://httpbin.org/get?name=mikaze");
// レスポンスの内容を表示
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
// リクエストが成功した場合は終了
if (response.IsSuccessStatusCode)
{
Console.WriteLine("完了");
return;
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
// リトライ回数が最大回数に達した場合は終了
if (retryCount > MAX_RETRY)
{
Console.WriteLine("失敗.");
return;
}
// 指定された待機時間(秒)だけ待つ
await Task.Delay(TimeSpan.FromSeconds(retryDelaySeconds));
// リトライ回数を増やして再帰呼び出し
await RetryRequest(retryCount + 1);
}
}
Discussion