Practice
1. What is the main purpose of using
@OnQueueEvent decorators in NestJS queues?easy
Solution
Step 1: Understand the role of
This decorator is used to listen for events emitted by the queue, such as when a job completes or fails.@OnQueueEventStep 2: Identify what
It does not create queues, configure concurrency, or delete jobs manually; it only listens to events.@OnQueueEventdoes not doFinal Answer:
To listen and react to specific queue events like job completion or failure -> Option BQuick Check:
@OnQueueEventlistens to events [OK]
Hint: Remember:
@OnQueueEvent listens to queue events only [OK]Common Mistakes:
- Thinking it creates or deletes queues
- Confusing event listening with queue configuration
- Assuming it manages job concurrency
2. Which of the following is the correct syntax to listen for a 'completed' event in a NestJS queue using
@OnQueueEvent?easy
Solution
Step 1: Recall the exact event name for job completion
The official event name emitted by NestJS queues for job completion is 'completed'.Step 2: Match the syntax with the correct event name
The syntax must use@OnQueueEvent('completed')to listen properly.Final Answer:
@OnQueueEvent('completed')\nhandleCompleted(job: Job) {\n // handle job completion\n} -> Option CQuick Check:
Event name is 'completed' exactly [OK]
Hint: Use exact event names like 'completed' with
@OnQueueEvent [OK]Common Mistakes:
- Using incorrect event names like 'complete' or 'done'
- Misspelling the decorator syntax
- Not passing the event name as a string
3. Given the following code snippet, what will be logged when a job fails in the queue?
@OnQueueEvent('failed')
handleFailed(job: Job, error: Error) {
console.log(`Job ${job.id} failed with error: ${error.message}`);
}medium
Solution
Step 1: Analyze the event and handler parameters
The handler listens to the 'failed' event and receives the job and error objects.Step 2: Understand the console.log output
The log prints the job's id and the error's message in the format: "Job failed with error: ".Final Answer:
Job <job_id> failed with error: <error_message> -> Option AQuick Check:
Failed event logs job id and error message [OK]
Hint: Failed event handlers get job and error objects [OK]
Common Mistakes:
- Ignoring job id in the log message
- Confusing 'failed' with 'completed' event
- Logging incomplete error information
4. You wrote this event listener but it never triggers:
@OnQueueEvent('completed')
handleCompleted() {
console.log('Job done');
} What is the likely problem?medium
Solution
Step 1: Check the event handler signature
Event handlers for 'completed' receive the job object as a parameter, but this method has none.Step 2: Understand why missing parameters cause no trigger
Without the expected parameter, NestJS cannot properly call the handler, so it never triggers.Final Answer:
The handler is missing the job parameter to receive event data -> Option DQuick Check:
Event handlers need correct parameters [OK]
Hint: Always include expected parameters in event handlers [OK]
Common Mistakes:
- Omitting parameters in event handlers
- Changing event names incorrectly
- Thinking handlers must be called manually
5. You want to monitor a NestJS queue to log when jobs are added, completed, or failed. Which combination of event listeners should you implement to cover these events effectively?
hard
Solution
Step 1: Identify correct event names for job lifecycle
In NestJS queues, 'waiting' is emitted when a job is added, 'completed' when done, and 'failed' on failure.Step 2: Verify the other options' event names
Other options use incorrect or non-existent event names like 'added', 'done', 'error', 'start', 'finish', 'fail', 'enqueue', 'success', 'failure'.Final Answer:
Use @OnQueueEvent('waiting'), @OnQueueEvent('completed'), and @OnQueueEvent('failed') -> Option AQuick Check:
Correct event names: waiting, completed, failed [OK]
Hint: Use official event names: waiting, completed, failed [OK]
Common Mistakes:
- Using wrong event names not recognized by NestJS
- Missing the 'waiting' event for job addition
- Confusing 'failed' with 'fail' or 'error'
