Durabull Documentation

Scheduled Jobs

Create, inspect, and remove BullMQ scheduled jobs across queues with cron or interval-based schedules.

A scheduler is a recurring job template: BullMQ produces jobs from its cron or interval schedule, and your existing workers process those jobs. Durabull manages the schedule and template; it does not execute your application code. Make sure a worker listens to the same queue and Redis prefix.

Global Scheduled Jobs View

Route:

  • /$orgSlug/c/$connectionId/scheduled-jobs

This page aggregates scheduled jobs across discovered queues for the active connection.

Create a Scheduled Job from a Queue

Use queue detail to create a recurring job or edit its schedule and payload.

Route:

  • /$orgSlug/c/$connectionId/queues/$queueName/scheduled-jobs/new

Use Schedule Job from a queue to open a dedicated page for creating the scheduler.

The page supports:

  • stable scheduler IDs
  • job name and JSON payload
  • cron schedules with timezone support
  • fixed interval schedules (every in milliseconds)
  • optional start date, end date, and run limit
  • template job options such as attempts, priority, backoff, and retention
  • an editor-style JSON payload experience with formatting and indentation shortcuts
  • immediate handoff into an edit page after creation

Queue-Level Scheduled Jobs

Route tab under queue detail:

  • /$orgSlug/c/$connectionId/queues/$queueName?tab=scheduled

Useful for queue-specific cleanup and scheduler ownership review. Every scheduler listed here links to its own edit page:

  • /$orgSlug/c/$connectionId/queues/$queueName/scheduled-jobs/$schedulerId

Data Included Per Scheduled Job

  • Scheduler ID
  • Cron pattern or interval cadence
  • Queue name
  • Job name
  • Next run time (if available)
  • Timezone, start/end window, and limit (when configured)
  • Recent failed count
  • Last failed timestamp

Failure indicators sample the queue’s most recent failed jobs and match by job name. They are not a complete history or proof that a particular scheduler created each matching job.

API Endpoints

  • List across queues:
    • GET /api/c/:connectionId/scheduled-jobs
  • List by queue:
    • GET /api/c/:connectionId/scheduled-jobs/queue/:queueName
  • Create scheduler:
    • POST /api/c/:connectionId/scheduled-jobs/queue/:queueName
  • Load scheduler:
    • GET /api/c/:connectionId/scheduled-jobs/queue/:queueName/:schedulerId
  • Update scheduler:
    • PUT /api/c/:connectionId/scheduled-jobs/queue/:queueName/:schedulerId
  • Remove scheduler:
    • DELETE /api/c/:connectionId/scheduled-jobs/queue/:queueName/:schedulerId

Create Scheduler Request Shape

{
  "schedulerId": "billing-hourly",
  "name": "reconcile-billing",
  "data": {
    "source": "dashboard"
  },
  "schedule": {
    "type": "cron",
    "pattern": "0 * * * *",
    "timezone": "America/Los_Angeles",
    "immediately": true,
    "limit": 24
  },
  "options": {
    "attempts": 3,
    "priority": 5,
    "backoff": {
      "type": "fixed",
      "delay": 5000
    },
    "removeOnComplete": 100,
    "removeOnFail": false
  }
}

Rules:

  • schedulerId must be stable and unique within the queue
  • schedule.type is either cron or every
  • cron schedules can include timezone and immediately
  • interval schedules use everyMs
  • startDate, endDate, and limit are optional for either mode
  • dates accept Unix milliseconds or parseable date strings; use ISO 8601 with a timezone
  • removing a scheduler stops future repetitions; it does not cancel jobs that are already active
  1. Open the queue you want to schedule into.
  2. Use the top-bar Schedule Job action or the queue's Scheduled Jobs tab CTA.
  3. Enter a stable scheduler ID and worker-facing job name.
  4. Choose cron or interval mode, then set timezone/window/limit if needed.
  5. Add payload and job options, create the scheduler, then use the dedicated edit page for later changes.

Failure Analysis Pattern

When a scheduled job has recent failures:

  1. Jump to queue detail.
  2. Inspect failed jobs by matching job name.
  3. Review logs and stacktraces.
  4. Decide whether to keep scheduler, fix worker logic, or remove scheduler.