Skip to main content
The Jobs page lets you browse, search, and manage individual jobs across all your queues. Investigate failures, retry jobs, and view detailed job information.

Job Browser

The job browser displays jobs in a table with filtering and sorting options.

Job Information

ColumnDescription
IDUnique job identifier
NameJob type/name
QueueWhich queue the job belongs to
StatusCurrent job state
CreatedWhen the job was added to the queue
ProcessedWhen the job started processing
FinishedWhen the job completed or failed
ProgressJob progress percentage (if reported)

Filtering Jobs

By Status

Filter jobs by their current state using the status tabs:
StatusDescription
AllShow all jobs
WaitingJobs ready to be processed
ActiveJobs currently being processed
CompletedSuccessfully finished jobs
FailedJobs that threw errors
DelayedJobs scheduled for later

By Queue

Use the queue dropdown to filter jobs from a specific queue:
  • All Queues: Show jobs from all queues
  • Specific Queue: Show jobs from selected queue only

By Name

Search for jobs by name/type:
  1. Enter the job name in the search field
  2. Results filter in real-time
Use name filtering to find all instances of a specific job type when debugging issues.

Sorting

Sort jobs by different criteria:
Sort OptionDescription
TimestampWhen the job was created (default)
Processed OnWhen processing started
Finished OnWhen the job completed
ProgressJob progress percentage
Toggle between ascending and descending order.

Job Details

Click on any job to view its full details.

Job Metadata

Key information about the job:
  • Job ID: Unique identifier
  • Queue: Parent queue name
  • Status: Current state with visual badge
  • Attempts: Number of processing attempts
  • Max Attempts: Configured retry limit

Job Data

View the complete job payload as formatted JSON:
{
  "userId": "user_123",
  "action": "send-welcome-email",
  "data": {
    "email": "user@example.com",
    "template": "welcome-v2"
  }
}
Job data is displayed in a collapsible JSON viewer for easy navigation of nested objects.

Job Timeline

See the complete lifecycle of the job:
EventDescription
CreatedJob added to queue
WaitingJob in waiting state
DelayedJob in delayed state (if applicable)
ActiveProcessing started
ProgressProgress updates (if reported)
CompletedSuccessfully finished
FailedError occurred

Stack Trace (Failed Jobs)

For failed jobs, view the complete error information:
  • Error message
  • Stack trace
  • Attempt number when failed
Error: Connection refused to payment gateway
    at PaymentService.charge (/app/services/payment.js:45:11)
    at processJob (/app/workers/orders.js:23:5)
    at Worker.processJob (/node_modules/bullmq/...)

Job Actions

Retry Job

Retry a failed job to process it again:
1

Find the failed job

Filter by Failed status to see failed jobs.
2

Open job details

Click on the job to view its details.
3

Click Retry

Click the Retry button. The job will be moved back to the waiting state.
Retrying a job will process it again with the same data. Ensure the underlying issue is resolved first.
When to retry:
  • Transient errors (network timeouts, service unavailable)
  • After fixing a bug in the worker code
  • After resolving external service issues

Remove Job

Permanently delete a job from the queue:
1

Select the job

Click on the job you want to remove.
2

Click Remove

Click the Remove button.
3

Confirm

Confirm the deletion. This action cannot be undone.
Removing a job is permanent. The job data will be lost and cannot be recovered.
When to remove:
  • Test jobs that shouldn’t be processed
  • Duplicate jobs
  • Jobs with invalid data that will never succeed

Bulk Operations

For managing multiple jobs, consider using:
  • Status filters to view groups of jobs
  • The BullMQ API directly for bulk operations
  • Queue-level operations (pause/resume) for broader control

Pagination

Jobs are paginated for performance:
  • Default: 100 jobs per page
  • Navigate between pages with pagination controls
  • Total count shown for filtered results

Access Modes

Job operations depend on your connection’s access mode:
OperationRead-WriteRead-Only
View jobsYesYes
View job detailsYesYes
Retry jobYesNo
Remove jobYesNo

Best Practices

Debugging Failed Jobs

  1. Filter by Failed status
  2. Sort by Finished On (newest first)
  3. Open the job to view the stack trace
  4. Check the job data for invalid inputs
  5. Review the timeline to understand when the failure occurred

Monitoring Active Jobs

  • Long-running active jobs may indicate stuck workers
  • Check the Processed On time for active jobs
  • If a job has been active for too long, the worker may have crashed

Cleaning Up Old Jobs

BullMQ has built-in job retention settings. Configure in your worker:
const queue = new Queue('my-queue', {
  defaultJobOptions: {
    removeOnComplete: {
      age: 3600, // Keep for 1 hour
      count: 1000 // Keep last 1000
    },
    removeOnFail: {
      age: 86400 // Keep failed jobs for 24 hours
    }
  }
});

Next Steps