ਕਿਸੇ request handler ਵਿੱਚ 10 ਲੱਖ users ਉੱਤੇ ਕਦੇ loop ਨਾ ਚਲਾਓ — queue ਰਾਹੀਂ fan out ਕਰੋ, ਹਰ provider ਜਿੰਨਾ ਸਵੀਕਾਰ ਕਰ ਸਕੇ ਓਨਾ ਹੀ throttle ਕਰੋ, ਹਰ send ਨੂੰ idempotent ਬਣਾਓ, ਅਤੇ failures ਨੂੰ 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
