ஒரு request handler-க்குள் 1M பயனர்கள் மீது loop போட வேண்டாம் — queue மூலம் fan out செய்யுங்கள், ஒவ்வொரு provider ஏற்றுக்கொள்ளக்கூடியதற்கு ஏற்ப throttle செய்யுங்கள், ஒவ்வொரு அனுப்புதலையும் idempotent ஆக்குங்கள், மேலும் தோல்விகளை retry-க்காக ஒரு DLQ-க்கு route செய்யுங்கள். API அழைப்பு வெறுமனே 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
