Pengiriman, Percobaan Ulang, dan Kegagalan
Apa yang dianggap berhasil
Server Anda harus membalas dengan status 2xx dalam 8 detik. Hal berikut dihitung gagal: status non-2xx, redirect 3xx (tidak diikuti), timeout, dan gagal tersambung. Etalasse hanya membaca 2 KB pertama respons dan menyimpan 1000 karakter untuk log.
Jadwal percobaan ulang
| Percobaan | Waktu |
|---|---|
| 1 | Segera |
| 2 | 1 menit kemudian |
| 3 | 5 menit |
| 4 | 30 menit |
| 5 | 2 jam |
| 6 | 6 jam |
| 7 | 24 jam |
Ditambah jeda acak 0-10 persen. Totalnya 7 percobaan dalam sekitar 33 jam. Jika semuanya gagal, pengiriman berstatus dead (dead letter) dan bisa dikirim ulang dari log.
Status pengiriman
| Status | Arti |
|---|---|
pending | Menunggu waktunya |
sending | Sedang dikirim |
succeeded | Berhasil |
dead | Semua percobaan gagal |
skipped | Dilewati karena endpoint sudah dinonaktifkan, dihapus, atau paketnya tidak lagi mencakup webhook saat jadwalnya tiba |
Kode galat pada log
Kolom galat terakhir pada log berisi salah satu dari: HTTP_<status> (balasan bukan 2xx, termasuk 3xx), TIMEOUT, CONNECT_FAILED, CONNECTION_RESET, TLS_ERROR (sertifikat tidak valid atau untuk nama lain), NO_RESPONSE, BAD_RESPONSE, BAD_REQUEST, dan SECRET_UNREADABLE (kunci server berubah: putar rahasia endpoint). URL yang ditolak saat pengiriman muncul sebagai URL_SCHEME, URL_HOST_BLOCKED, URL_PORT_BLOCKED, ADDRESS_BLOCKED, atau DNS_FAILED. Pengiriman berstatus skipped memiliki alasan ENDPOINT_INACTIVE, ENDPOINT_DELETED, PLAN_LIMIT, atau EVENT_MISSING.
Nonaktif otomatis
Endpoint yang mengalami 10 kegagalan atau lebih dan tidak ada keberhasilan selama 3 hari dinonaktifkan otomatis (alasan: auto_failures). Pemilik toko mendapat notifikasi di aplikasi.
Untuk mengaktifkannya lagi:
- Perbaiki penyebab kegagalan di server Anda.
- Aktifkan kembali endpoint (saklar aktif atau tombol Aktifkan). Penghitung kegagalan di-reset.
- Putar ulang event yang terlewat.
Event yang terjadi saat endpoint nonaktif tidak dikirim otomatis setelah diaktifkan. Gunakan replay untuk mengejarnya, selama masih dalam masa simpan 30 hari.
Log pengiriman
Log menampilkan setiap pengiriman, terbaru di atas. Filter yang tersedia: endpoint, status, jenis event, jenis (event, test, redelivery), dan rentang tanggal. Tiap baris menunjukkan status, kode HTTP, latensi, jumlah percobaan (n/7), dan jadwal percobaan berikutnya. Detail baris memuat riwayat tiap percobaan, JSON yang dikirim, dan cuplikan respons.
Log dan event disimpan 30 hari.
Kirim ulang (redeliver)
Tombol Kirim ulang pada sebuah baris membuat pengiriman baru (jenis redelivery) untuk event dan endpoint yang sama, dan langsung mengirimnya. Baris lama tidak diubah sehingga riwayat tetap utuh. Bisa untuk status apa pun, asalkan endpoint aktif.
Replay event
Dari daftar event terbaru (atau halaman pesanan, bila tersedia di Dashboard Anda), Anda bisa memutar ulang sebuah event:
- ke satu endpoint tertentu, atau
- ke semua endpoint aktif yang melangganinya (menurut langganan saat ini).
Replay hanya untuk event dalam 30 hari terakhir dan endpoint yang aktif.
Jaminan
- Minimal sekali, tidak berurutan. Siapkan penanganan duplikat berdasarkan
idevent. - Event dicatat dalam transaksi database yang sama dengan perubahannya: tidak ada event untuk perubahan yang dibatalkan, dan tidak ada yang hilang jika server mati setelah commit.
- Biasanya tiba dalam beberapa detik. Ada pekerja cadangan tiap menit.
- Pekerja yang berjalan bersamaan tidak mengirim pengiriman yang sama pada saat yang sama.
- Body kurang dari 256 KB.
Tips agar endpoint sehat
- Balas 2xx cepat, proses berat di antrean Anda sendiri.
- Balas 2xx juga untuk event duplikat yang sudah diproses.
- Jangan membalas 3xx; endpoint harus menjawab langsung.
- Pantau notifikasi dan log secara berkala.