0Pricing
C# Academy · Pelajaran

Penanganan Kesalahan dan Percobaan Ulang

Tangani kegagalan dengan percobaan ulang dan antrean dead-letter.

Penanganan Kesalahan dan Percobaan Ulang adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Kegagalan Itu Wajar

Konsumen dapat gagal: kesalahan basis data sementara, batas waktu sistem hilir, atau kesalahan pada data yang buruk. MassTransit menyediakan alat berlapis (percobaan ulang, pengiriman ulang, dan antrean kesalahan) agar kegagalan ditangani dengan baik, bukan malah menghilangkan pesan.

Percobaan Ulang Segera

Untuk gangguan singkat, konfigurasikan percobaan ulang agar MassTransit memproses kembali pesan beberapa kali secara berurutan dengan cepat sebelum menyerah.

cfg.ReceiveEndpoint("orders", e =>
{
    e.UseMessageRetry(r => r.Immediate(3));
    e.ConfigureConsumer<OrderConsumer>(context);
});

Percobaan Ulang Berinterval dan Eksponensial

Memberi jeda di antara percobaan ulang membantu ketika pemulihan membutuhkan waktu lebih lama. Gunakan interval atau penundaan eksponensial, serupa dengan Polly.

e.UseMessageRetry(r =>
    r.Exponential(5,
        minInterval: TimeSpan.FromSeconds(1),
        maxInterval: TimeSpan.FromMinutes(1),
        intervalDelta: TimeSpan.FromSeconds(2)));

Memfilter Kesalahan yang Menjalani Percobaan Ulang

Lakukan percobaan ulang hanya untuk pengecualian sementara; jangan lakukan untuk pengecualian permanen seperti kegagalan validasi. Gunakan Handle dan Ignore untuk membatasi cakupan percobaan ulang.

e.UseMessageRetry(r =>
{
    r.Handle<TimeoutException>();
    r.Ignore<ValidationException>();
    r.Immediate(3);
});

Percobaan Ulang dan Pengiriman Ulang

Percobaan ulang mempertahankan pesan di memori dan memprosesnya kembali dengan cepat. Pengiriman ulang (percobaan ulang tertunda atau tingkat kedua) mengembalikan pesan ke broker agar dikirimkan lagi jauh setelahnya, sehingga konsumen tidak sibuk sementara itu.

e.UseDelayedRedelivery(r =>
    r.Intervals(TimeSpan.FromMinutes(5),
                TimeSpan.FromMinutes(15),
                TimeSpan.FromMinutes(30)));

Menggabungkan Kedua Lapisan

Penyiapan yang tangguh menggunakan percobaan ulang segera untuk gangguan singkat dan pengiriman ulang tertunda untuk gangguan yang lebih lama. Konfigurasikan pengiriman ulang di luar percobaan ulang agar setiap upaya pengiriman ulang juga mendapatkan percobaan ulang segera masing-masing.

e.UseDelayedRedelivery(r => r.Intervals(
    TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(15)));
e.UseMessageRetry(r => r.Immediate(3));

Antrean Kesalahan

Ketika semua percobaan ulang dan pengiriman ulang telah habis, MassTransit memindahkan pesan ke antrean kesalahan (bernama <queue>_error). Pesan dipertahankan bersama detail pengecualian untuk penyelidikan dan tidak pernah dihapus secara diam-diam.

Kesalahan

Saat terjadi kegagalan, MassTransit juga menerbitkan peristiwa Fault<T>. Layanan lain dapat menggunakan kesalahan tersebut untuk memberi peringatan, mencatat log, atau memicu kompensasi.

public class OrderFaultConsumer : IConsumer<Fault<OrderPlaced>>
{
    public Task Consume(ConsumeContext<Fault<OrderPlaced>> context)
    {
        // inspect context.Message.Exceptions
        return Task.CompletedTask;
    }
}

Idempotensi Itu Penting

Karena percobaan ulang dan pengiriman ulang dapat memproses pesan lebih dari sekali, konsumen harus bersifat idempoten: menangani pesan yang sama dua kali tidak boleh menagih biaya dua kali atau menggandakan pekerjaan. Gunakan ID unik dan pemeriksaan duplikasi.

Memutar Ulang dari Antrean Kesalahan

Setelah memperbaiki kesalahan, Anda dapat memindahkan pesan dari antrean kesalahan kembali ke antrean asli untuk memprosesnya kembali dan memulihkan pekerjaan yang sebelumnya gagal.

Antrean Surat Mati dan Antrean Terlewati

MassTransit juga menggunakan antrean terlewati (_skipped) untuk pesan yang tidak diinginkan oleh konsumen mana pun. Hal ini membantu Anda menemukan jenis pesan yang salah rute atau tidak terduga dalam produksi.

Pemeriksaan Singkat

Uji penanganan kesalahan dan percobaan ulang.

Ringkasan

MassTransit menggunakan penanganan kegagalan berlapis: percobaan ulang (segera atau eksponensial, dengan cakupan yang dibatasi menggunakan Handle/Ignore) untuk gangguan singkat, pengiriman ulang untuk gangguan yang lebih lama, dan antrean kesalahan untuk pesan yang seluruh percobaannya telah habis, serta peristiwa Fault<T> untuk pemberian peringatan. Karena pesan dapat diproses lebih dari sekali, pastikan konsumen bersifat idempoten, dan putar ulang pesan dari antrean kesalahan setelah memperbaiki kesalahan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penanganan Kesalahan dan Percobaan Ulang” gratis?

Ya — teks lengkap “Penanganan Kesalahan dan 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 “Penanganan Kesalahan dan Percobaan Ulang”?

Tangani kegagalan dengan percobaan ulang dan antrean dead-letter. 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 4 dari 4.

Berapa lama pelajaran “Penanganan Kesalahan dan 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

  1. Konsep Pesan
  2. Memproduksi dan Mengonsumsi Pesan
  3. Saga dan Alur Kerja
  4. Penanganan Kesalahan dan Percobaan Ulang
← Kembali ke C# Academy