尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

Bull装饰器完全指南:@Processor、@OnQueueEvent与依赖注入
📅 发布时间:2026/8/2 22:51:55

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

【免费下载链接】bullBull module for Nest framework (node.js) :cow:项目地址: https://gitcode.com/gh_mirrors/bul/bull

Bull是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: Job<ReportData>) { 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中山太阳能草坪灯厂家哪家好?中山太阳能草坪灯厂家哪家靠谱一文解析 - 品牌深度评测
  • MRIcroGL:免费开源的医学影像三维可视化神器,5分钟上手教程
  • 如何用QtScrcpy实现低延迟手机投屏与跨平台控制?

最新新闻

  • 【路径规划】基于麻雀算法求解机器人栅格地图最短路径规划问题matlab代码
  • 单片机计算机毕设之基于 ESP8266 的 10 米局域网嵌入式遥控平台设计与开发 基于易安卓的单片机局域网继电器通断管理系统设计(020901)
  • Pot:跨平台翻译与OCR的终极解决方案
  • 2026年 呼和浩特水磨石翻新抛光施工推荐榜:老旧地面修复,地坪打磨固化,专业团队现场勘察报价 - 卓企推荐
  • Mock性能优化:Elixir测试中避免常见Mocking陷阱的10个实用技巧
  • 24C02 EEPROM嵌入式开发实战:从I²C驱动到数据管理策略

日新闻

  • 怀化母婴除甲醛公司测甲醛中心怎么选:康之居母婴除甲醛标准、流程、避坑指南 - 信誉隆金银铂奢回收
  • 三步打造你的终极音乐中心:foobox-cn网络电台功能完整指南
  • Lance湖仓格式:为多模态AI工作流设计的终极数据存储方案

周新闻

  • 怀化母婴除甲醛公司测甲醛中心怎么选:康之居母婴除甲醛标准、流程、避坑指南 - 信誉隆金银铂奢回收
  • 三步打造你的终极音乐中心:foobox-cn网络电台功能完整指南
  • Lance湖仓格式:为多模态AI工作流设计的终极数据存储方案

月新闻

  • ClickHouse版本管理深度实战:4步构建零风险升级与回滚体系
  • Java 23 种设计模式:从踩坑到精通 | 番外:责任链模式 —— 物流审批流程实战
  • 华硕笔记本性能解放指南:G-Helper轻量级控制工具全面解析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号