Skip to content

Define Queue

defineQueue registers a BullMQ queue bound to your Redis connection configured via the module.

Usage

Create server/queues/index.ts:

The options are forwarded to BullMQ's Queue constructor, except connection which is managed by the module.

ts
import { defineQueue } from '#processor'

export default defineQueue({
  name: 'hello',
  options: {}
})

API

ts
type DefineQueueArgs<DefaultNameType extends string = string> = {
  name: DefaultNameType
  options?: Omit<QueueOptions, 'connection'> & { defaultJobOptions?: JobsOptions }
}

declare function defineQueue<
  DataTypeOrJob = any,
  DefaultResultType = any,
  DefaultNameType extends string = string,
>(args: DefineQueueArgs<DefaultNameType>): Queue<DataTypeOrJob, DefaultResultType, DefaultNameType>

Typed example

ts
import { defineQueue } from '#processor'

type HelloName = 'hello'
type HelloData = { message: string, ts: number }
type HelloResult = { echoed: string, processedAt: number }

export default defineQueue<HelloData, HelloResult, HelloName>({
  name: 'hello',
})

// Later in your app code, add a job with fully-typed name and data
await queue.add('hello', { message: 'hi', ts: Date.now() })