Bull装饰器完全指南:@Processor、@OnQueueEvent与依赖注入

发布时间:2026/11/15 14:16:40

Bull装饰器完全指南:@Processor、@OnQueueEvent与依赖注入 Bull装饰器完全指南Processor、OnQueueEvent与依赖注入【免费下载链接】bullBull module for Nest framework (node.js) :cow:项目地址: https://gitcode.com/gh_mirrors/bul/bullBull是Nest框架中用于处理队列任务的强大模块通过装饰器可以轻松实现任务处理、事件监听和依赖注入等核心功能。本文将详细介绍Processor、OnQueueEvent装饰器的使用方法及依赖注入技巧帮助开发者快速掌握Bull在Nest项目中的应用。一、Processor装饰器定义队列处理器Processor装饰器用于将类标记为队列处理器使其能够处理指定队列中的任务。它支持多种配置方式满足不同场景需求。1.1 基础使用方式最简单的用法是直接指定队列名称Processor(user-queue) export class UserProcessor { // 任务处理方法 }这种方式会创建一个与指定队列关联的处理器用于处理该队列中的所有任务。1.2 高级配置选项Processor装饰器还支持传入ProcessorOptions对象进行更详细的配置Processor({ name: email-queue, scope: Scope.REQUEST, configKey: email-queue-config }) export class EmailProcessor { // 任务处理方法 }其中name指定队列名称scope设置处理器的生命周期作用域configKey用于指定配置键以便从配置中获取队列连接信息。1.3 结合Worker选项除了基础配置外还可以传入WorkerOptions来设置Bull的工作选项Processor(image-queue, { concurrency: 5, removeOnComplete: true }) export class ImageProcessor { // 任务处理方法 }这里的concurrency设置并发处理数量removeOnComplete设置任务完成后是否自动删除。二、OnQueueEvent装饰器监听队列事件OnQueueEvent装饰器用于注册队列事件监听器使方法能够响应队列的各种事件。2.1 常用事件类型Bull队列支持多种事件如任务完成、失败、重试等Processor(order-queue) export class OrderProcessor { OnQueueEvent(completed) handleCompleted(job: Job) { console.log(Job ${job.id} completed successfully); } OnQueueEvent(failed) handleFailed(job: Job, error: Error) { console.error(Job ${job.id} failed: ${error.message}); } }上述代码分别监听了任务完成和失败事件并在事件发生时执行相应的处理逻辑。2.2 事件处理方法事件处理方法会接收事件相关的参数如job对象和错误信息等。通过这些参数可以获取任务的详细信息并进行相应的处理。三、依赖注入InjectQueue装饰器InjectQueue装饰器用于在类中注入队列实例以便直接操作队列。3.1 注入默认队列如果只有一个队列或需要注入默认队列可以不指定名称export class OrderService { constructor( InjectQueue() private orderQueue: Queue ) {} async createOrder(data: OrderData) { await this.orderQueue.add(create-order, data); } }3.2 注入指定队列当项目中有多个队列时可以通过名称指定要注入的队列export class NotificationService { constructor( InjectQueue(email-queue) private emailQueue: Queue, InjectQueue(sms-queue) private smsQueue: Queue ) {} async sendEmail(data: EmailData) { await this.emailQueue.add(send-email, data); } async sendSms(data: SmsData) { await this.smsQueue.add(send-sms, data); } }四、实际应用示例4.1 完整的处理器示例下面是一个包含任务处理和事件监听的完整处理器示例Processor(report-queue, { concurrency: 3 }) export class ReportProcessor { constructor( private reportService: ReportService ) {} Process(generate-report) async handleGenerateReport(job: JobReportData) { const result await this.reportService.generate(job.data); return result; } OnQueueEvent(completed) handleCompleted(job: Job) { console.log(Report ${job.data.reportId} generated successfully); } OnQueueEvent(failed) handleFailed(job: Job, error: Error) { console.error(Report generation failed: ${error.message}); } }4.2 队列模块配置在Nest模块中配置Bull队列Module({ imports: [ BullModule.registerQueue({ name: report-queue, redis: { host: localhost, port: 6379, }, }), ], providers: [ReportProcessor, ReportService], }) export class ReportModule {}五、总结通过Processor、OnQueueEvent和InjectQueue这三个核心装饰器我们可以轻松实现Nest框架中Bull队列的任务处理、事件监听和依赖注入功能。这些装饰器提供了简洁而强大的API使得队列操作变得直观和易于维护。合理使用这些装饰器可以帮助我们构建高效、可靠的任务处理系统处理各种异步任务如邮件发送、报表生成、文件处理等。希望本文能够帮助开发者更好地理解和应用Bull装饰器提升Nest项目的开发效率和质量。【免费下载链接】bullBull module for Nest framework (node.js) :cow:项目地址: https://gitcode.com/gh_mirrors/bul/bull创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/13 4:37:44

FPGA下载器速度优化:从JTAG协议到Vivado极限设置实战

1. 项目缘起:为什么我们要折腾下载器的速度?做FPGA开发的朋友,尤其是用Xilinx(现在叫AMD Xilinx)平台的,手里肯定都有一两根USB下载线。从经典的Platform Cable USB,到小巧的JTAG-HS2、JTAG-HS3…

2026/11/14 5:30:17

Windows部署Swoole实战:Docker与WSL2方案详解

1. 项目概述:为什么要在Windows上部署Swoole?作为一名长期在Linux环境下开发高性能网络应用的PHPer,我最近接到一个需求,需要在一个特定的Windows开发环境中快速验证一个基于Swoole的WebSocket服务原型。这让我不得不直面一个“非…

2026/11/14 7:44:53

单片机毕业设计-基于 STM32F103 的光敏检测智能定时窗帘系统 基于 GL5506 传感器的室内智能窗帘控制器设计(018201)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/11/15 21:48:10

哪里电工证好考点查询证全国通用吗

电工证好考点怎么查?保姆级教程帮你避开培训机构套路 怕考不过白交培训费?别再被那些“包过班”忽悠了!我带你看清【哪里电工证好考点查询】的真相,从报名到考试、再到复审,一整套保姆级流程给你讲明白。如果你正打算考低压电工证或高压电工证,这篇文章…

2026/11/15 21:48:10

海南在哪里换电工证千万别踩坑!外省证怎么转过来看清楚

海南在哪里换电工证千万别踩坑!外省证怎么转过来看清楚 之前考的证在外省能不能转过来?别急着报名,先看清楚流程,不然真的会踩坑。如果你是准备在海南换电工证,或者正在考虑把外省的电工证转过来,这篇文章就是为你量身定制的。下面我从政策背景、核心变…

2026/11/15 21:48:10

济南低压电工证学多久良心建议 找工作前必须了解这些

济南低压电工证学多久良心建议 找工作前必须了解这些 你是不是正被“急需特种作业证才能上岗找工作”这个问题逼得焦头烂额?别急,先搞清楚济南低压电工证学多久,再考虑怎么报名、怎么考试、怎么复审。这不是小事,直接关系到你能不能顺利上岗、能不能拿到…

2026/11/15 21:48:10

钟祥电工证报名地点在哪考?新手避坑全攻略来了

钟祥电工证报名地点在哪考?新手避坑全攻略来了 你是不是也遇到过这种情况:听说要考电工证,但一打听报名地点,全是中介推荐的“包过班”“代办服务”,让人摸不着头脑,担心被坑?别急,今天我就用真实案例给你讲清楚【钟祥电工证报名地点在哪考】,以及报…

2026/11/15 21:48:10

崇明电工证怎么考官方回应来了,工地太忙根本没时间复习考试

崇明电工证怎么考官方回应来了,工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这是很多周口房建工程从业者的真实写照。尤其是在项目紧、工期短的情况下,很多人想考电工证,却又担心抽不出时间准备。不过,官方回应已经明确:…

2026/11/15 21:43:09

低压电工证兆欧表考试怎么考?考前押题帮你省时省力

低压电工证兆欧表考试怎么考?考前押题帮你省时省力 之前考的证在外省能不能转过来?说实话,这确实是很多电工朋友的痛点,尤其是像你这样在郑州金水区从事公路工程的电工,经常在工地和项目间跑,可能之前在别的省市考的证,现在想在河南这边用,那就得了解…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 4:46:37

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/15 2:06:31

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑