Batasi paralelisme
Gunakan antrean sisi klien yang terbatas dan kirim setiap tugas melalui permintaan kompatibel biasa. Cara ini mengendalikan beban tanpa menganggap adanya endpoint batch di server.
Mode batch layanan merupakan kontrak API terpisah: gunakan rute dan isi permintaannya hanya setelah mode tersebut dipublikasikan dalam pengaturan akun atau spesifikasi.
async function runWithLimit(items, limit, work) {
const results = [];
for (let offset = 0; offset < items.length; offset += limit) {
const group = items.slice(offset, offset + limit);
results.push(...await Promise.all(group.map(work)));
}
return results;
}Kendalikan antrean
- Buat ID tugas internal deterministik dan unik dalam satu proses.
- Bagi kumpulan yang terlalu besar menjadi kelompok yang dapat dikelola.
- Pisahkan kegagalan satu item dari kegagalan seluruh antrean.
Kumpulkan hasil
Kaitkan hasil dengan ID internal dan simpan status setiap tugas.
Jangan otomatis mencoba ulang semua tugas: coba ulang hanya kegagalan sementara setelah memeriksa idempotensi.