Stochează task-urile într-o coadă cu bucket-uri de timp / prioritate cheiată după momentul scadenței, poll-uiește doar task-urile scadente acum și predă-le unor workeri idempotenți cu livrare at-least-once. Nu scana niciodată 10M de rânduri la fiecare tick — indexează după momentul declanșării, astfel încât fiecare poll să atingă doar ce este scadent.
Arhitectură
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
