Case study
Go workers and NSQ schedulers
The New MVAS scheduler: a Go + NSQ queue processor that sends subscription content, charges, and warnings across three Thai mobile operators.
FIG.1Workers

- Role
- Main author — 597 of 657 commits (2022–2023)
- Stack
- GoEchoNSQMongoDB
- Result
- 597 of 657 commits (91%).
Problem
Payment, cleanup, and telecom-adjacent work cannot all live in the request thread. Jobs pile up, fail, and need to be retried without blocking the API.
What I owned
Main author — 597 of 657 commits (2022–2023)
What I built
- Built per-operator send, charge, and retry flows, including delivery-report error tasks.
- Moved blocklist and whitelist checks into MongoDB aggregations and fixed production deadlocks.
- Built short-link generation for content messages, free-trial warnings, quizzes, and top-ups.
System shape
Go + Echo service; schedulers enqueue work on NSQ independently of the HTTP cycle and workers consume it. Per-operator retry paths, delivery-report handling, and MongoDB aggregations for blocklist and subscription checks.
What changed
Long-running and retryable work moved off the request path, which is where it belongs.
Outcome
597 of 657 commits (91%).