Modules@robinpath/queue
queue

@robinpath/queue

0.1.2Node.jsPublic

In-memory job queue with priorities, delays, and dead-letter for RobinPath

Queue

In-memory job queue with priorities, delayed execution, retry, dead-letter, pause/resume

Package: @robinpath/queue | Category: Infrastructure | Type: Utility

Authentication

No authentication required. All functions are available immediately.

Use Cases

Use the queue module when you need to:

  • Create a named job queue -- Use queue.create to perform this operation
  • Add a job to a queue with optional priority and delay -- Use queue.push to perform this operation
  • Get the next pending job from a queue (highest priority, oldest first) -- Use queue.pop to perform this operation
  • Mark a job as completed with an optional result -- Use queue.complete to perform this operation
  • Mark a job as failed; auto-retries if under maxAttempts, otherwise moves to dead-letter -- Use queue.fail to perform this operation

Quick Reference

FunctionDescriptionReturns
createCreate a named job queueQueue configuration
pushAdd a job to a queue with optional priority and delay{id, status, priority}
popGet the next pending job from a queue (highest priority, oldest first)Job object or null if queue is empty/paused
completeMark a job as completed with an optional result{id, status, duration}
failMark a job as failed; auto-retries if under maxAttempts, otherwise moves to dead-letter{id, status: 'retry' or 'dead-letter', attempts}
retryRe-queue a failed or dead-letter job for processing{id, status, source}
removeRemove a job from a queueTrue if job was removed
sizeGet the number of jobs in a queue, optionally filtered by statusNumber of jobs
statusGet detailed status and metrics for a queueQueue status with counts by job status
pausePause a queue (pop will return null){name, paused: true}
resumeResume a paused queue{name, paused: false}
clearRemove all jobs from a queue{cleared: number}
deadLetterList jobs in the dead-letter queueArray of failed jobs
getJobGet details for a specific job by IDJob details or null
destroyDestroy a queue and free all resourcesTrue if queue existed

Functions

create

Create a named job queue

Module: queue | Returns: object -- Queue configuration

queue.create "emails"
ParameterTypeRequiredDescription
namestringYesQueue name
optionsobjectNo{maxDeadLetter: number}

push

Add a job to a queue with optional priority and delay

Module: queue | Returns: object -- {id, status, priority}

queue.push "emails" $emailData {"priority": 10}
ParameterTypeRequiredDescription
queuestringYesQueue name
dataanyYesJob data/payload
optionsobjectNo{priority, delay, maxAttempts}

pop

Get the next pending job from a queue (highest priority, oldest first)

Module: queue | Returns: object -- Job object or null if queue is empty/paused

queue.pop "emails"
ParameterTypeRequiredDescription
queuestringYesQueue name

complete

Mark a job as completed with an optional result

Module: queue | Returns: object -- {id, status, duration}

queue.complete "emails" $jobId "sent"
ParameterTypeRequiredDescription
queuestringYesQueue name
jobIdstringYesJob ID
resultanyNoOptional result data

fail

Mark a job as failed; auto-retries if under maxAttempts, otherwise moves to dead-letter

Module: queue | Returns: object -- {id, status: 'retry' or 'dead-letter', attempts}

queue.fail "emails" $jobId "SMTP timeout"
ParameterTypeRequiredDescription
queuestringYesQueue name
jobIdstringYesJob ID
errorstringYesError message

retry

Re-queue a failed or dead-letter job for processing

Module: queue | Returns: object -- {id, status, source}

queue.retry "emails" $jobId
ParameterTypeRequiredDescription
queuestringYesQueue name
jobIdstringYesJob ID

remove

Remove a job from a queue

Module: queue | Returns: boolean -- True if job was removed

queue.remove "emails" $jobId
ParameterTypeRequiredDescription
queuestringYesQueue name
jobIdstringYesJob ID

size

Get the number of jobs in a queue, optionally filtered by status

Module: queue | Returns: number -- Number of jobs

queue.size "emails" "pending"
ParameterTypeRequiredDescription
queuestringYesQueue name
statusstringNoFilter: pending, active, completed, failed, delayed

status

Get detailed status and metrics for a queue

Module: queue | Returns: object -- Queue status with counts by job status

queue.status "emails"
ParameterTypeRequiredDescription
queuestringYesQueue name

pause

Pause a queue (pop will return null)

Module: queue | Returns: object -- {name, paused: true}

queue.pause "emails"
ParameterTypeRequiredDescription
queuestringYesQueue name

resume

Resume a paused queue

Module: queue | Returns: object -- {name, paused: false}

queue.resume "emails"
ParameterTypeRequiredDescription
queuestringYesQueue name

clear

Remove all jobs from a queue

Module: queue | Returns: object -- {cleared: number}

queue.clear "emails"
ParameterTypeRequiredDescription
queuestringYesQueue name

deadLetter

List jobs in the dead-letter queue

Module: queue | Returns: array -- Array of failed jobs

queue.deadLetter "emails" 10
ParameterTypeRequiredDescription
queuestringYesQueue name
limitnumberNoMax entries (default 50)

getJob

Get details for a specific job by ID

Module: queue | Returns: object -- Job details or null

queue.getJob "emails" $jobId
ParameterTypeRequiredDescription
queuestringYesQueue name
jobIdstringYesJob ID

destroy

Destroy a queue and free all resources

Module: queue | Returns: boolean -- True if queue existed

queue.destroy "emails"
ParameterTypeRequiredDescription
queuestringYesQueue name

Error Handling

All functions throw on failure. Common errors:

ErrorCause
Job "..." not found in queue "..."Check the error message for details
Job "..." not foundCheck the error message for details
@desc "Create and validate result"
do
  set $result as queue.create "emails"
  if $result != null
    print "Success"
  else
    print "No result"
  end
enddo

Recipes

1. List and iterate Job

Retrieve all items and loop through them.

@desc "Get job and iterate results"
do
  set $result as queue.getJob "emails" $jobId
  each $item in $result
    print $item
  end
enddo

2. Create a new item with create

Create a new resource and capture the result.

set $result as queue.create "emails"
print "Created: " + $result

3. Check before creating

List existing items and only create if needed.

@desc "Get job and create"
do
  set $existing as queue.getJob "emails" $jobId
  if $existing == null
    queue.create "emails"
    print "Item created"
  else
    print "Item already exists"
  end
enddo

4. Multi-step Queue workflow

Chain multiple queue operations together.

@desc "Create, push, and more"
do
  set $r_create as queue.create "emails"
  set $r_push as queue.push "emails" $emailData {"priority": 10}
  set $r_pop as queue.pop "emails"
  print "All operations complete"
enddo

5. Safe create with validation

Check results before proceeding.

@desc "Create and validate result"
do
  set $result as queue.create "emails"
  if $result != null
    print "Success: " + $result
  else
    print "Operation returned no data"
  end
enddo

Related Modules

  • json -- JSON module for complementary functionality

Versions (1)

VersionTagPublished
0.1.2latest1 months ago
Install
$ robinpath add @robinpath/queue

Collaborators

Dumitru Balaban
Dumitru Balaban
@dumitru
View all @robinpath modules
Version0.1.2
LicenseMIT
Unpacked Size6.2 KB
Versions1
Weekly Downloads21
Total Downloads21
Stars0
Last Publish1 months ago
Created1 months ago

Category

devops