Bird
Raised Fist0
NestJSframework~20 mins

Job options (delay, attempts, priority) in NestJS - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Bull Job Options Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
Understanding delay option in NestJS Bull jobs
What will be the behavior of a job scheduled with a delay of 5000 milliseconds in NestJS Bull queue?
NestJS
queue.add('sendEmail', { userId: 123 }, { delay: 5000 });
AThe job will wait 5 seconds before it becomes eligible for processing.
BThe job will be retried 5 times with 1 second delay between retries.
CThe job will be assigned the highest priority and processed first.
DThe job will start processing immediately after being added to the queue.
Attempts:
2 left
💡 Hint
Think about what the delay option controls in job scheduling.
❓ state_output
intermediate
2:00remaining
Effect of attempts option on job retries
If a job is configured with { attempts: 3 } and it fails twice before succeeding, how many times will the job processor run?
NestJS
queue.add('processData', { data: 'info' }, { attempts: 3 });
AThe processor will run 1 time only.
BThe processor will run 2 times total.
CThe processor will run 4 times total.
DThe processor will run 3 times total.
Attempts:
2 left
💡 Hint
Remember that attempts count includes the first try plus retries.
📝 Syntax
advanced
2:00remaining
Correct syntax for setting job priority in NestJS Bull
Which option correctly sets a job priority of 10 when adding a job to a Bull queue in NestJS?
NestJS
queue.add('generateReport', { reportId: 42 }, ???);
A{ priority: 10 }
B{ priority: '10' }
C{ priority: true }
D{ priority: -10 }
Attempts:
2 left
💡 Hint
Priority should be a positive integer number.
🔧 Debug
advanced
2:00remaining
Identifying error with invalid delay value
What error will occur if you set delay to a negative number like -1000 in a Bull job options?
NestJS
queue.add('cleanup', {}, { delay: -1000 });
ARangeError: Delay must be a positive integer
BTypeError: Delay option must be a string
CNo error, job will be processed immediately
DSyntaxError: Unexpected token '-'
Attempts:
2 left
💡 Hint
Think about what negative delay means for scheduling.
🧠 Conceptual
expert
3:00remaining
How priority affects job processing order in Bull queues
Given three jobs added with priorities 5, 10, and 1 respectively, in what order will Bull process them assuming no delay or attempts?
NestJS
queue.add('job1', {}, { priority: 5 });
queue.add('job2', {}, { priority: 10 });
queue.add('job3', {}, { priority: 1 });
Ajob3, job1, job2
Bjob2, job1, job3
Cjob1, job2, job3
Djob1, job3, job2
Attempts:
2 left
💡 Hint
Higher priority numbers mean higher priority in Bull.

Practice

(1/5)
1. In NestJS job queues, what does the delay option do when adding a job?
easy
A. It sets the maximum number of retries for the job.
B. It postpones the job execution by a specified time.
C. It assigns the job a priority level.
D. It cancels the job immediately.

Solution

  1. Step 1: Understand the purpose of delay in job options

    The delay option is used to postpone when a job starts running after being added to the queue.
  2. Step 2: Compare with other options

    attempts controls retries, priority controls order, so they do not delay execution.
  3. Final Answer:

    It postpones the job execution by a specified time. -> Option B
  4. Quick Check:

    delay = postpone job start [OK]
Hint: Delay means wait before running the job [OK]
Common Mistakes:
  • Confusing delay with attempts (retry count)
  • Thinking delay sets job priority
  • Assuming delay cancels the job
2. Which of the following is the correct way to add a job with 3 retry attempts and a 5-second delay in NestJS?
easy
A. queue.add('jobName', data, { retries: 3, wait: 5000 })
B. queue.add('jobName', data, { delay: 3, attempts: 5000 })
C. queue.add('jobName', data, { attempts: '3', delay: '5000' })
D. queue.add('jobName', data, { attempts: 3, delay: 5000 })

Solution

  1. Step 1: Identify correct option keys and values

    The correct keys are attempts for retries and delay for postponing in milliseconds.
  2. Step 2: Check value types and order

    Values must be numbers, not strings. queue.add('jobName', data, { attempts: 3, delay: 5000 }) uses correct keys and numeric values.
  3. Final Answer:

    queue.add('jobName', data, { attempts: 3, delay: 5000 }) -> Option D
  4. Quick Check:

    Correct keys and numeric values = queue.add('jobName', data, { attempts: 3, delay: 5000 }) [OK]
Hint: Use numeric attempts and delay keys exactly [OK]
Common Mistakes:
  • Using wrong keys like retries or wait
  • Passing numbers as strings
  • Swapping delay and attempts values
3. Given this code snippet, what will be the order of job execution?
queue.add('job1', data1, { priority: 2 });
queue.add('job2', data2, { priority: 1 });
queue.add('job3', data3, { priority: 3 });
medium
A. job2, job1, job3
B. job3, job1, job2
C. job1, job2, job3
D. job1, job3, job2

Solution

  1. Step 1: Understand priority values

    Lower priority number means higher priority and runs first.
  2. Step 2: Order jobs by priority

    job2 has priority 1 (highest), job1 priority 2, job3 priority 3 (lowest).
  3. Final Answer:

    job2, job1, job3 -> Option A
  4. Quick Check:

    Lower priority number runs first = job2, job1, job3 [OK]
Hint: Lower priority number runs first [OK]
Common Mistakes:
  • Assuming higher number means higher priority
  • Ignoring priority and using add order
  • Mixing up job names and priorities
4. Identify the error in this job addition code:
queue.add('emailJob', data, { delay: '1000', attempts: 5 });
medium
A. The attempts option is invalid and should be removed.
B. The job name must be an object, not a string.
C. The delay value should be a number, not a string.
D. The data parameter is missing.

Solution

  1. Step 1: Check types of job options

    delay expects a number in milliseconds, but here it is a string '1000'.
  2. Step 2: Validate other parameters

    attempts is valid, job name as string is correct, data is present.
  3. Final Answer:

    The delay value should be a number, not a string. -> Option C
  4. Quick Check:

    delay must be number, not string [OK]
Hint: Delay must be number type, not string [OK]
Common Mistakes:
  • Passing delay as string instead of number
  • Removing valid attempts option
  • Thinking job name must be object
5. You want to add a job that should run after 10 seconds, retry up to 4 times if it fails, and run before other jobs with default priority. Which job options object is correct?
hard
A. { delay: 10000, attempts: 4 }
B. { delay: 10000, attempts: 4, priority: 1 }
C. { attempts: 4, priority: 0 }
D. { delay: 10000, priority: 0 }

Solution

  1. Step 1: Understand default priority

    If priority is not set, jobs have default priority (usually 0 or normal). To run before others, priority must be lower number.
  2. Step 2: Check options for delay and attempts

    Delay 10000 ms (10 seconds) and attempts 4 are required. Priority is optional if default is acceptable.
  3. Step 3: Analyze options

    { delay: 10000, attempts: 4, priority: 1 } sets priority to 1 (lower priority than default 0), so it runs after default priority jobs. { delay: 10000, attempts: 4 } omits priority, so default priority applies, running before jobs with priority 1.
  4. Final Answer:

    { delay: 10000, attempts: 4 } -> Option A
  5. Quick Check:

    Delay + attempts with default priority = { delay: 10000, attempts: 4 } [OK]
Hint: Omit priority for default; delay and attempts must be set [OK]
Common Mistakes:
  • Setting priority higher than default to run first
  • Forgetting delay or attempts
  • Assuming priority 0 is higher than 1
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard