Omezení paralelismu
Použijte omezenou frontu na straně klienta a každou úlohu odešlete prostřednictvím běžného kompatibilního požadavku. Tím řídíte zatížení, aniž byste předpokládali existenci dávkového koncového bodu serveru.
Dávkový režim služby je samostatný kontrakt API: jeho cestu a tělo použijte až poté, co budou zveřejněny v nastavení účtu nebo ve specifikaci.
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;
}Řízení fronty
- Zajistěte, aby interní ID úlohy bylo deterministické a v rámci jednoho běhu jedinečné.
- Příliš velkou sadu rozdělte na zvládnutelné skupiny.
- Selhání jedné položky odlišujte od selhání celé fronty.
Shromáždění výsledků
Propojte výsledek s interním ID a uchovávejte stav každé úlohy.
Neopakujte automaticky všechny úlohy: opakujte pouze přechodná selhání po ověření idempotence.