Skip to main content
Queue events allow you to monitor what’s happening in your queues without the overhead of running a full worker. Use the QueueEventsListener to listen to events like job completion, failure, and progress updates.

Basic Setup

1

Create a QueueEventsListener class

Use the @QueueEventsListener decorator to create an events listener:
2

Register as a provider

Add the events listener to your module’s providers:

Available Events

Listen to various queue events using the @OnQueueEvent decorator:
Triggered when a job completes successfully:

Complete Example

audio.queue-events.ts

Event Types

All available queue events:
  • waiting - Job is waiting to be processed
  • active - Job has started processing
  • completed - Job completed successfully
  • failed - Job failed
  • progress - Job reported progress
  • delayed - Job is delayed
  • stalled - Job stalled (worker lost lock)
  • paused - Queue was paused
  • resumed - Queue was resumed
  • cleaned - Old jobs were cleaned
  • drained - Queue was drained
  • removed - Job was removed
  • retries-exhausted - Job exhausted all retry attempts

Multiple Queue Listeners

Create separate event listeners for different queues:

Integration with Services

Inject services into your event listeners:

Best Practices

Use Logger

Use NestJS Logger for consistent logging:

Keep Handlers Fast

Event handlers should be quick - delegate heavy work to other services

Error Handling

Handle errors in event listeners:

Separate Concerns

Use different event listeners for different responsibilities

NestJS Integration

Learn about NestJS integration basics

NestJS Producers

Add jobs to queues in NestJS

External Documentation

NestJS Queues

Official NestJS queue documentation

Queue Events API

BullMQ Queue Events API reference