DataQueueDataQueue

Tags

The tags feature lets you group, search, and batch jobs using arbitrary string tags. Tags can be set when adding a job and used in various JobQueue methods.

Tags in JobOptions

You can assign tags to a job when adding it:

await jobQueue.addJob({
  jobType: 'email',
  payload: { to: 'user@example.com', subject: 'Hello' },
  tags: ['welcome', 'user'],
});

Tags in JobRecord

The tags field is available on JobRecord objects:

{
  "id": 1,
  "jobType": "email",
  "tags": ["welcome", "user"]
}

Tag Query Methods

getJobsByTags

const jobs = await jobQueue.getJobsByTags(['welcome', 'user'], 'all');

Cancel jobs by tags

You can cancel jobs by their tags using the cancelAllUpcomingJobs method with the tags filter (an object with values and mode):

// Cancel all jobs with both 'welcome' and 'user' tags
await jobQueue.cancelAllUpcomingJobs({
  tags: { values: ['welcome', 'user'], mode: 'all' },
});

// Cancel all jobs with any of the tags
await jobQueue.cancelAllUpcomingJobs({
  tags: { values: ['foo', 'bar'], mode: 'any' },
});

// Cancel all jobs with exactly the given tags
await jobQueue.cancelAllUpcomingJobs({
  tags: { values: ['foo', 'bar'], mode: 'exact' },
});

// Cancel all jobs with none of the given tags
await jobQueue.cancelAllUpcomingJobs({
  tags: { values: ['foo', 'bar'], mode: 'none' },
});

TagQueryMode

The mode parameter controls how tags are matched:

  • 'exact': Jobs with exactly the same tags (no more, no less)
  • 'all': Jobs that have all the given tags (can have more)
  • 'any': Jobs that have at least one of the given tags
  • 'none': Jobs that have none of the given tags

The default mode is 'all'.