{
  "product": "Specification (reference)",
  "title": "Job Queue",
  "summary": "Enqueue background work and run it reliably: retries, scheduling, dead letters.",
  "category": "services",
  "entries": [
    {
      "path": [
        "AI",
        "Enqueue",
        "Submit a job with a payload"
      ],
      "value": "",
      "status": "yes",
      "note": "returns a job id"
    },
    {
      "path": [
        "AI",
        "Enqueue",
        "Delayed and scheduled jobs"
      ],
      "value": "run at / run in",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Enqueue",
        "Recurring jobs on a cron expression"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Enqueue",
        "Deduplicate by idempotency key"
      ],
      "value": "",
      "status": "yes",
      "note": "same key, one job"
    },
    {
      "path": [
        "AI",
        "Enqueue",
        "Priority ordering"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Execution",
        "At-least-once delivery to a worker"
      ],
      "value": "",
      "status": "yes",
      "note": "stated delivery guarantee"
    },
    {
      "path": [
        "AI",
        "Execution",
        "Visibility timeout with heartbeat extension"
      ],
      "value": "",
      "status": "yes",
      "note": "a crashed worker releases its job"
    },
    {
      "path": [
        "AI",
        "Execution",
        "Concurrency limit per queue and per worker"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Execution",
        "Rate limiting per queue"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Failure",
        "Retry with exponential backoff and jitter"
      ],
      "value": "",
      "status": "yes",
      "note": "bounded attempt count"
    },
    {
      "path": [
        "AI",
        "Failure",
        "Dead-letter queue after final failure"
      ],
      "value": "",
      "status": "yes",
      "note": "with the error recorded"
    },
    {
      "path": [
        "AI",
        "Failure",
        "Manual retry from the dead-letter queue"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Lifecycle",
        "Cancel a queued job"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Lifecycle",
        "Job states are observable"
      ],
      "value": "queued/running/done/failed",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Lifecycle",
        "Completed job retention window"
      ],
      "value": "",
      "status": "yes",
      "note": "then pruned"
    },
    {
      "path": [
        "AI",
        "Observability",
        "Queue depth, throughput and age metrics"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Dashboard",
        "Queues with depth and failure counts"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Dashboard",
        "Job inspector with payload, attempts and error"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Dashboard",
        "Retry, cancel and purge actions"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    }
  ]
}
