Nu itera niciodată peste 1M de utilizatori într-un request handler — distribuie sarcina printr-o coadă (fan out), limitează debitul la ceea ce poate accepta fiecare furnizor, fă fiecare trimitere idempotentă și trimite eșecurile într-un DLQ pentru reîncercare. Apelul API doar pune în coadă; workerii fac I/O-ul lent.
Arhitectură
Admin ─▶ Campaign API ─▶ [enqueue job] ─▶ Kafka/SQS ─┐
▼
┌──────────────── Worker pool (autoscaled) ───────────────┐
│ claim ─▶ dedup(Redis SETNX) ─▶ rate-limiter ─▶ provider │
└──────────┬──────────────────────────────┬───────────────┘
│ ok │ fail (5xx/timeout)
▼ ▼
sent_log (DB) Retry (backoff) ─▶ DLQ
