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() })