Kebijakan Percobaan Ulang
Ulangi operasi saat terjadi kegagalan sementara dengan jeda bertahap.
Kebijakan Percobaan Ulang adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Apa Itu Polly?
Polly adalah pustaka ketahanan .NET yang membantu aplikasi Anda menghadapi kegagalan sementara, respons lambat, dan dependensi yang kelebihan beban. Pustaka ini menyediakan strategi seperti percobaan ulang, pemutus sirkuit, batas waktu, pengganti, dan pembatasan laju.
Kursus ini menggunakan Polly v8 (API Polly.Core).
dotnet add package Polly.CoreMengapa Melakukan Percobaan Ulang?
Banyak kegagalan bersifat sementara: gangguan jaringan singkat, batas waktu sesaat, atau layanan yang sedang dimulai ulang. Mengulangi operasi sesaat kemudian sering kali berhasil tanpa mengganggu pengguna.
Percobaan ulang seharusnya hanya menargetkan kesalahan sementara, bukan kesalahan permanen seperti 404.
Strategi Percobaan Ulang Dasar
Di Polly v8, Anda membangun ResiliencePipeline dengan RetryStrategyOptions. Secara bawaan, pengecualian yang dilempar akan memicu percobaan ulang.
using Polly;
using Polly.Retry;
var pipeline = new ResiliencePipelineBuilder()
.AddRetry(new RetryStrategyOptions
{
MaxRetryAttempts = 3
})
.Build();Menjalankan Melalui Alur Ketahanan
Bungkus panggilan berisiko dengan ExecuteAsync. Polly menjalankannya dan, jika terjadi kesalahan, mengulanginya hingga jumlah yang dikonfigurasi.
await pipeline.ExecuteAsync(async token =>
{
await httpClient.GetAsync("https://api.example.com/data", token);
});Menentukan Hal yang Perlu Diulang
Gunakan ShouldHandle dengan pembangun predikat untuk mengulang hanya pengecualian atau hasil tertentu, sehingga percobaan ulang terhadap kesalahan permanen dapat dihindari.
new RetryStrategyOptions<HttpResponseMessage>
{
ShouldHandle = new PredicateBuilder<HttpResponseMessage>()
.Handle<HttpRequestException>()
.HandleResult(r => r.StatusCode == HttpStatusCode.ServiceUnavailable),
MaxRetryAttempts = 3
};Jeda Konstan atau Eksponensial
Mengulang secara langsung dapat membebani layanan yang sedang bermasalah. Jeda memberikan jarak antarpercobaan. Polly mendukung jeda Konstan, Linier, dan Eksponensial melalui pengaturan BackoffType.
Jeda Eksponensial
Jeda eksponensial menggandakan penundaan pada setiap percobaan (misalnya 2 dtk., 4 dtk., 8 dtk.). Tetapkan BackoffType.Exponential dengan Delay dasar.
new RetryStrategyOptions
{
MaxRetryAttempts = 4,
BackoffType = DelayBackoffType.Exponential,
Delay = TimeSpan.FromSeconds(2)
};Menambahkan Keacakan
Jika banyak klien melakukan percobaan ulang dengan jadwal yang sama, tercipta lonjakan serempak ("gerombolan yang datang bersamaan"). Keacakan menambahkan variasi pada penundaan. Aktifkan UseJitter = true.
new RetryStrategyOptions
{
MaxRetryAttempts = 4,
BackoffType = DelayBackoffType.Exponential,
Delay = TimeSpan.FromSeconds(1),
UseJitter = true
};Merespons Setiap Percobaan Ulang
Panggilan balik OnRetry memungkinkan Anda mencatat percobaan atau mengirim metrik. Panggilan ini menerima nomor percobaan dan kegagalan yang memicunya.
new RetryStrategyOptions
{
MaxRetryAttempts = 3,
OnRetry = args =>
{
Console.WriteLine($"Retry {args.AttemptNumber} after {args.RetryDelay}");
return default;
}
};Membatasi Total Waktu Percobaan Ulang
Percobaan ulang tanpa batas dapat membuat pengguna menunggu terlalu lama. Gabungkan percobaan ulang dengan strategi batas waktu (yang dibahas nanti) atau batasi jumlah percobaan agar operasi segera gagal ketika pemulihan tidak mungkin terjadi.
Percobaan Ulang untuk HttpClient
Untuk panggilan HTTP, daftarkan penangan ketahanan pada HttpClient agar percobaan ulang otomatis diterapkan pada setiap permintaan.
builder.Services.AddHttpClient("api")
.AddResilienceHandler("retry", pipeline =>
{
pipeline.AddRetry(new HttpRetryStrategyOptions
{
MaxRetryAttempts = 3,
BackoffType = DelayBackoffType.Exponential
});
});Pemeriksaan Singkat
Uji pemahaman Anda tentang percobaan ulang.
Rangkuman
Kebijakan percobaan ulang menangani kegagalan sementara dengan mengulangi operasi. Di Polly v8, Anda membangun alur ketahanan dengan AddRetry, menetapkan cakupannya dengan ShouldHandle, dan mengatur jarak antarpercobaan menggunakan BackoffType.Exponential serta UseJitter. Gunakan OnRetry untuk mengamati percobaan, lalu daftarkan penangan ketahanan untuk melindungi setiap panggilan HttpClient.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kebijakan Percobaan Ulang” gratis?
Ya — teks lengkap “Kebijakan Percobaan Ulang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kebijakan Percobaan Ulang”?
Ulangi operasi saat terjadi kegagalan sementara dengan jeda bertahap. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Kebijakan Percobaan Ulang” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Kebijakan Percobaan Ulang
- Pola Pemutus Sirkuit
- Kebijakan Batas Waktu dan Cadangan
- Alur Ketahanan