Millrace
0%
Millrace Start free →
NewMillrace 3 delivers exactly once

Every job lands. Even when the server doesn't.

A durable queue for backend teams, with retries, ordering and back-pressure built in. 3 a.m. stays quiet.

Moving jobs for teams at

Built like a mill race. Steady, gated, never dry.

How it flows

A race feeds a wheel only as fast as it can turn. Millrace works the same way, from the producer's first enqueue to the worker's last acknowledgement.

01 · The weir

Back-pressure at the door.

Producers slow down before the queue overflows, not after the disk is full.

02 · The sluices

Ordered lanes, no queue-jumping.

Per-key ordering keeps one customer's jobs in line without holding up anyone else's.

03 · The wheels

Workers that never spin twice.

Leases and idempotency keys run every job once, straight through a deploy.

Five lines between you and a dropped job.

Wrap the function, name the key it orders by, and it survives retries, deploys and the worst night of the year.

Lanes and limits, in one file.

Concurrency, ordering and the dead-letter queue live in the repo, reviewed like everything else.

Replay the crash. Count the losses.

Every enqueue is in the log, so last night can be run again until the number at the end is zero.

The parts

Three things a queue must never do.

Gates

Never overflow

Back-pressure reaches the producer first, with a clear error it can retry on.

Gears

Never run twice

Leases, fencing tokens and idempotency keys, on by default for every job.

Weir

Never run dry

Scheduled and recurring jobs are kept in the same log, so a restart picks up the flow.

0
jobs lost in last year's chaos tests
38ms
median enqueue to start
1.4B
jobs a day on the biggest cluster
We replayed our worst night. Every invoice went out once.
Tomas Reyes, platform lead at a fictional payments company
Free up to a million jobs a month

Let the work flow.

Start free →