Aliran event di EventBridge menggunakan kebijakan retry, kebijakan toleransi kesalahan, dan dead-letter queue (DLQ) untuk menangani kegagalan pengiriman event. Ketika pengiriman ke target gagal, EventBridge melakukan retry berdasarkan kebijakan retry yang dikonfigurasi. Jika semua upaya retry telah habis, kebijakan toleransi kesalahan menentukan apakah event yang gagal akan dilewati atau aliran akan diblokir. Event yang tidak dapat dikirim dialihkan ke DLQ agar tetap tersimpan untuk pemeriksaan lebih lanjut.
Diagram berikut menunjukkan bagaimana ketiga kebijakan ini saling berinteraksi:
Event delivery fails
|
v
Retry policy
(backoff or exponential decay)
|
All retries exhausted?
/ \
No Yes
| |
Retry Fault tolerance policy
again / \
Allowed Prohibited
| |
DLQ configured? Stream blocked,
/ \ task status -> Ready
Yes No
| |
Send to Discard
DLQ eventKebijakan retry
Kebijakan retry mengatur cara EventBridge mencoba kembali mengirimkan event setelah terjadi kegagalan. Setiap aliran event mendukung dua jenis kebijakan retry:
| Policy | Max retries | Retry interval | Max duration | Default |
|---|---|---|---|---|
| Backoff retry | 3 | Acak, 10–20 detik antar upaya | – | Ya |
| Exponential decay retry | 176 | Dimulai dari 1 dtk, berlipat ganda hingga 512 dtk | 1 hari | Tidak |
Backoff retry
Backoff retry adalah kebijakan default. EventBridge mencoba mengirim ulang event yang gagal hingga tiga kali, dengan interval acak antara 10 hingga 20 detik antara setiap upaya. Gunakan kebijakan ini jika Anda memperkirakan kegagalan bersifat sementara dan dapat segera teratasi.
Exponential decay retry
Exponential decay retry menyediakan jendela retry yang lebih panjang untuk target yang mungkin memerlukan waktu lebih lama untuk pulih. EventBridge mencoba mengirim ulang event yang gagal hingga 176 kali dalam periode maksimum satu hari. Interval antar upaya berlipat ganda pada setiap percobaan, hingga mencapai batas maksimum 512 detik:
1 s, 2 s, 4 s, 8 s, 16 s, 32 s, 64 s, 128 s, 256 s, 512 sSetelah interval mencapai 512 detik, 167 upaya retry berikutnya dilanjutkan dengan interval tetap 512 detik.
Non-retryable errors
Jika retry tidak dapat dilakukan karena error seperti konfigurasi resource yang tidak valid, status task berubah menjadi Start Failed terlepas dari kebijakan retry atau toleransi kesalahan yang digunakan. EventBridge tidak melakukan retry terhadap error semacam ini karena masalah mendasarnya memerlukan intervensi manual.
Kebijakan toleransi kesalahan
Kebijakan toleransi kesalahan mengatur cara EventBridge menangani event yang tetap gagal setelah semua retry telah habis. Setiap aliran event mendukung dua jenis kebijakan toleransi kesalahan:
| Policy | Behavior after retries exhausted | Effect on subsequent events |
|---|---|---|
| Fault tolerance allowed | Event dikirim ke DLQ (jika dikonfigurasi) atau dibuang | Pemrosesan berlanjut |
| Fault tolerance prohibited | Status task berubah menjadi Ready | Pemrosesan diblokir hingga Anda menyelesaikan masalah |
Fault tolerance allowed
Saat toleransi kesalahan diizinkan, kegagalan pengiriman tidak menghentikan pemrosesan event. Setelah semua retry habis, EventBridge mengirimkan event ke DLQ atau membuangnya, lalu melanjutkan pemrosesan.
Pilih kebijakan ini jika kehilangan event dapat diterima atau jika Anda telah mengonfigurasi DLQ untuk menangkap event yang gagal.
Fault tolerance prohibited
Saat toleransi kesalahan dilarang, kegagalan pengiriman akan memblokir pemrosesan event setelah semua retry habis. Status task berubah menjadi Ready, dan tidak ada event selanjutnya yang diproses hingga Anda menyelesaikan masalah tersebut.
Pilih kebijakan ini jika setiap event harus dikirimkan dan Anda lebih memilih menghentikan pemrosesan daripada kehilangan event.
Antrian Surat Mati
Dead-letter queue (DLQ) menangkap event yang gagal dikirim setelah semua retry habis. Saat Anda mengaktifkan DLQ pada suatu task, EventBridge mengirimkan data event mentah ke DLQ alih-alih membuangnya. Fitur DLQ dinonaktifkan secara default.
Target DLQ yang didukung
Layanan berikut didukung sebagai target DLQ:
| Service | Description |
|---|---|
| ApsaraMQ for RocketMQ | Layanan message queue |
| Simple Message Queue (formerly MNS) | Layanan message queue ringan |
| ApsaraMQ for Kafka | Layanan message queue kompatibel Kafka |
| EventBridge event bus | Mengarahkan event yang gagal ke event bus lain untuk pemrosesan lebih lanjut |
Kapan mengaktifkan DLQ
Aktifkan DLQ saat Anda perlu:
Memeriksa dan mendebug event yang gagal dikirim
Memproses ulang event yang gagal setelah akar masalah diperbaiki
Mencatat semua kegagalan pengiriman untuk keperluan audit
Jika Anda menggunakan kebijakan Fault tolerance allowed tanpa DLQ, event yang gagal akan dibuang secara permanen setelah retry habis. Untuk mencegah kehilangan data, konfigurasikan DLQ sebelum mengaktifkan toleransi kesalahan.