OnQueueError 未在任务队列上触发:NestJS + Bull

OnQueueError not firing on task queue: NestJS + Bull

我注意到 bull 默认情况下不会向控制台打印异常。为了解决这个问题,我想用 @OnQuerueError 装饰器捕获错误并将它们打印到控制台(现在)。我当前的实施不起作用,我不明白为什么。 handler 没有被调用。我验证了其他事件侦听器的工作,例如 @OnQueueActive():

@Processor('email')
export default class DigestEmailProcessor {
    constructor(
    ) {}

    @OnQueueError()
    handler() {
        console.log('fired exception');
    }

    @Process(PROCESS_NAMES.email.send)
    async send(job: Job<JobData>) {
        throw new Error("Foo bar")
    }
}

事件侦听器 @OnQueueError() 对于此用例不正确。 尝试使用事件侦听器 @OnQueueFailed() 这会为已抛出错误的作业引发事件。

使用您的示例代码:

@Processor('email')
export default class DigestEmailProcessor {
    constructor(
    ) {}

    @OnQueueFailed()
    handler(job: Job, error: Error) {
        console.log('fired exception');
    }

    @Process(PROCESS_NAMES.email.send)
    async send(job: Job<JobData>) {
        throw new Error("Foo bar")
    }
}

有关不同 event listeners

的更多信息