Two queue systems. Each used for what it's good at.
BullMQ runs the cron-style sweeps inside Node — scheduling-sweep, AJIO token revalidation, AJIO orders autosync, claim sweeper. AWS SQS runs the marketplace dispatch and execution — FIFO for per-account ordering, Standard for parallelisable work. Operational visibility lives in CloudWatch.
- BullMQ is restricted to cron-style sweeps (scheduling-sweep, ajio-token-revalidation, ajio-orders-autosync, claim-sweeper).
- AWS SQS handles marketplace dispatch + execution. FIFO for per-account ordering; Standard for parallelisable work.
- Per-account FIFO ordering prevents second-order races (e.g. duplicate AJIO POB token-refresh attempts).
What you get.
Per-account FIFO ordering
Token-refresh, inventory deductions, and marketplace pushes for a single account run in order. Two refreshes against the same AJIO POB never race; one waits.
Cross-account parallelism
One seller's AJIO sync never blocks another seller's Meesho sync. Parallelism is bounded by per-account FIFO + the Standard queue consumer pool, not by global locks.
Operational visibility outside Node
SREs see queue depth, oldest message age, and DLQ contents in CloudWatch without spinning up Bull Board. The hybrid keeps day-2 operations sane.
What runs where.
- BullMQ — scheduling-sweep (*/5 * * * *).
- BullMQ — ajio-token-revalidation (0 */4 * * *).
- BullMQ — ajio-orders-autosync (0 * * * *).
- BullMQ — claim-sweeper (0 2 * * *).
- AWS SQS FIFO — account-sync.
- AWS SQS FIFO — inventory-deduct.
- AWS SQS FIFO — marketplace-push-{ajio,meesho,amazon,flipkart}.
- AWS SQS Standard — returns-sync.
- AWS SQS Standard — document-download.
- AWS SQS Standard — payout-sync.
- AWS SQS Standard — reconciliation.
Practical answers.
BullMQ relies on Redis persistence. AWS SQS gives durable retry across restarts via visibility-timeout, plus per-message DLQ semantics, plus CloudWatch-native ops visibility. SQS is the right call for the dispatch hot path.
Cron-style sweeps fan out to all enabled rows due now. That's much simpler as a BullMQ Repeatable Job inside Node than as an EventBridge rule + SQS message.
Each SQS queue has a paired DLQ. Messages that fail visibility-timeout retries land in the DLQ; SREs see them in CloudWatch and replay manually after triage.
Try it inside your own dashboard.
Free during early access. No card. Forever free under 25 orders/day.
