Parallelität begrenzen
Verwenden Sie eine begrenzte clientseitige Warteschlange und senden Sie jeden Auftrag über eine gewöhnliche kompatible Anfrage. So steuern Sie die Last, ohne einen Batch-Endpunkt auf dem Server vorauszusetzen.
Der Batch-Modus eines Dienstes ist ein eigener API-Vertrag: Verwenden Sie seine Route und seinen Anfragetext erst, nachdem sie in den Kontoeinstellungen oder der Spezifikation veröffentlicht wurden.
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;
}Warteschlange steuern
- Machen Sie eine interne Auftrags-ID innerhalb eines Durchlaufs deterministisch und eindeutig.
- Teilen Sie eine übergroße Menge in handhabbare Gruppen auf.
- Halten Sie den Fehler eines Elements vom Fehler der gesamten Warteschlange getrennt.
Ergebnisse erfassen
Ordnen Sie ein Ergebnis einer internen ID zu und speichern Sie den Status jedes Auftrags.
Wiederholen Sie nicht automatisch alle Aufträge: Wiederholen Sie nur vorübergehende Fehler, nachdem Sie die Idempotenz geprüft haben.