due time-ஆல் keyed செய்யப்பட்ட ஒரு time-bucketed / priority queue-இல் tasks-ஐச் சேமியுங்கள், இப்போது due ஆகும் tasks-ஐ மட்டும் poll செய்யுங்கள், மேலும் at-least-once delivery உடன் idempotent workers-க்கு அவற்றைக் கொடுங்கள். ஒவ்வொரு tick-இலும் 10M rows-ஐ ஒருபோதும் scan செய்யாதீர்கள் — fire time-ஆல் index செய்யுங்கள், இதனால் ஒவ்வொரு poll-ம் due ஆனதை மட்டும் தொடுகிறது.
கட்டமைப்பு
API ─▶ Task store (DB/Redis ZSET, score = due_ts) ── 10M tasks, sharded
│
Poller (leader per partition) ── ZPOPMIN due<=now ──▶ Ready queue (Kafka)
│ leader election (etcd/ZK) │
▼ ▼
other pollers idle/standby Worker pool (idempotent)
└─ ack ✔ / retry ✖ ─▶ DLQ
