Task queue priority and fairness

작업 큐 우선순위와 공정성

Run urgent tasks sooner while preventing one tenant from monopolizing shared workers.

···
html
<div class="scene"><div class="title">SHARED WORKER DISPATCH</div><div class="switch" id="priority">PRIORITY ON</div><div class="dispatch"><div class="queueItems"><span>A standard</span><span id="urgent">B urgent</span><span>A standard</span></div><div class="worker">WORKER<br><b id="next">B urgent</b></div></div><div class="counts"><span id="countA">A served 0</span><span id="countB">B served 0</span></div></div>
css
.scene{width:min(94vw,760px);height:min(86vh,320px);padding:clamp(10px,2.5vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);font:500 clamp(11px,1.3vw,16px)/1.25 "Pretendard Variable",Pretendard,-apple-system,sans-serif;display:flex;flex-direction:column;gap:clamp(7px,1.6vmin,12px);overflow:hidden}.scene *{box-sizing:border-box}.title{font-weight:750;color:var(--accent)}.muted{color:var(--muted)}.mono{font-family:ui-monospace,monospace}.row{display:flex;align-items:center;justify-content:center;gap:clamp(5px,1.4vmin,12px);flex:1;min-height:0}.tile{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(6px,1.6vmin,12px);text-align:center;min-width:0}.on{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important}.pulse{animation:pulse 1.6s infinite alternate}@keyframes pulse{to{border-color:var(--accent);transform:translateY(-3px)}}.switch{align-self:flex-start;border:1px solid var(--accent);border-radius:12px;padding:4px 9px;color:var(--accent);cursor:pointer}.dispatch{display:flex;align-items:center;gap:8px;flex:1}.queueItems{display:grid;gap:3px;flex:1}.queueItems span{border:1px solid var(--line);border-radius:5px;padding:3px}.queueItems #urgent{border-color:var(--accent-3)}.worker{flex:1;border:2px solid var(--accent);border-radius:8px;padding:10px 4px;text-align:center}.worker b{display:block;color:var(--accent)}.counts{display:flex;justify-content:space-between;gap:4px}.counts span{color:var(--muted)}
js
let priority=true,a=0,b=0,n=0;function tick(){const chooseB=priority?n%3!==2:n%2===1;if(chooseB)b++;else a++;document.getElementById('next').textContent=chooseB?'B urgent':'A standard';document.getElementById('countA').textContent='A served '+a;document.getElementById('countB').textContent='B served '+b;document.getElementById('priority').textContent=priority?'PRIORITY ON':'FAIRNESS VIEW';n++}tick();setInterval(tick,950);document.getElementById('priority').addEventListener('pointerdown',()=>{priority=!priority;tick()})

Priority moves urgent work ahead within a queue, while fairness controls how work is allocated across tenants. Temporal made both task-queue capabilities generally available in 2026. Together they can serve urgent requests without letting one large tenant starve smaller ones.

The demo changes the next dispatched task when priority is toggled and counts work for A and B. Teams still need to measure delay bounds and service levels for each tenant.

When to use

Use it when tenants with different demand and urgency share a worker pool.

Open as page ↗