← Lesson
Dead Letters, Poison, Fairness
Joeven
Run
Reset
Python loads on first run
def enqueue(payload, max_bytes=200, tenants_running=None, tenant_cap=2): tenants_running = tenants_running or {} raw = payload.get("blob") or "" if len(raw) > max_bytes: return {"ok": False, "code": "POISON", "dlq": True} if not payload.get("tenant"): return {"ok": False, "code": "NO_TENANT"} t = payload["tenant"] n = tenants_running.get(t, 0) if n >= tenant_cap: return {"ok": False, "code": "FAIR_QUEUE"} tenants_running[t] = n + 1 return {"ok": True, "running": tenants_running} print("ok", enqueue({"tenant": "acme", "blob": "hi"})) print("poison", enqueue({"tenant": "acme", "blob": "x" * 500})["code"]) busy = {"acme": 2} print("fair", enqueue({"tenant": "acme", "blob": "q"}, tenants_running=busy)["code"]) print("other tenant", enqueue({"tenant": "beta", "blob": "q"}, tenants_running=busy)["ok"])
Run to execute this in your browser. Nothing is sent to a server.