کبھی بھی request handler کے اندر 10 لاکھ صارفین پر loop نہ چلائیں — بلکہ queue کے ذریعے fan out کریں، ہر provider جتنا قبول کر سکے اُتنا throttle کریں، ہر send کو idempotent بنائیں، اور ناکامیوں کو retry کے لیے DLQ کی طرف route کریں۔ API call صرف enqueue کرتی ہے؛ سست I/O کا کام workers کرتے ہیں۔
فن تعمیر
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
