Queue
Takes work now so Workers can do it later. Users wait only for the enqueue.
What it does#
The Queue stands for RabbitMQ: a broker that holds work now so that Workers can do it later.
When an App Server links to a Queue, kinds that can go async hand most of their work to it as tasks: uploads, exports, webhooks, and notifications. The user waits only for the enqueue. The Queue offers its Workers what arrives, plus part of its backlog when they have room. It has a throughput limit, which each size step doubles.
Queue depth is the number of tasks waiting. A large backlog slows each enqueue a little.
Settings on its card:
Max length: refuses new tasks when full, instead of growing without limit. See backpressure.
Dead-letter queue: moves a task aside after its max attempts. Without one, a failing task retries forever. See dead-letter queue.
When to place it#
Place it when slow kinds hold App Server slots, for example uploads from slow clients or exports. A growing depth is the earliest sign that Workers are too slow.
How it fails#
With no Worker linked, every task is stranded.
A full Queue refuses what its Workers cannot take, and those requests fail as dropped.
Poison message: a task that always fails keeps coming back, and Workers spend most of their time on it. A dead-letter queue prevents it. Delete the message to end it.
A Zone outage takes it down unless it has a standby.
Tips#
Turn on the dead-letter queue as soon as you place a Queue.
Watch depth, not latency: users do not feel a backlog until it hits the max length.
Rules#
- Each further copy costs 25% more than the one before.
- Selling it refunds 50% of what its last copy cost.
- It has 6 sizes. Each step doubles its capacity and its Burn.