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
的更多信息
我注意到 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
的更多信息