จำกัดการทำงานพร้อมกัน
ใช้คิวฝั่งไคลเอนต์ที่มีขอบเขต และส่งแต่ละงานผ่านคำขอที่เข้ากันได้ตามปกติ วิธีนี้ควบคุมโหลดโดยไม่ตั้งสมมติฐานว่ามีเอนด์พอยต์แบตช์ของเซิร์ฟเวอร์
โหมดแบตช์ของบริการเป็นสัญญา API แยกต่างหาก: ใช้เส้นทางและเนื้อหาคำขอของโหมดนี้ต่อเมื่อมีการเผยแพร่ในการตั้งค่าบัญชีหรือข้อกำหนด API แล้วเท่านั้น
การทำงานพร้อมกันแบบมีขอบเขตที่ไคลเอนต์ควบคุม
typescript
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;
}ควบคุมคิว
- ทำให้รหัสงานภายในสร้างซ้ำได้ค่าเดิมเสมอ และไม่ซ้ำกันภายในการรันแต่ละครั้ง
- แบ่งชุดที่มีขนาดใหญ่เกินไปออกเป็นกลุ่มที่จัดการได้
- แยกความล้มเหลวของรายการหนึ่งออกจากความล้มเหลวของทั้งคิว
รวบรวมผลลัพธ์
เชื่อมผลลัพธ์กับรหัสภายในและเก็บสถานะของทุกงาน
อย่าลองงานทั้งหมดใหม่โดยอัตโนมัติ ให้ลองใหม่เฉพาะความล้มเหลวชั่วคราวหลังตรวจสอบ idempotency