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),仅供参考

相关新闻

disconnect-tracking-protection常见问题解答:新手必看的隐私防护指南

disconnect-tracking-protection常见问题解答:新手必看的隐私防护指南

disconnect-tracking-protection常见问题解答:新手必看的隐私防护指南 【免费下载链接】disconnect-tracking-protection Canonical repository for the Disconnect services file 项目地址: https://gitcode.com/gh_mirrors/di/disconnect-tracking-protection …

2026/11/13 1:10:31 阅读更多 →
EPSON RX8010SJ RTC芯片:高精度低功耗时间管理方案详解

EPSON RX8010SJ RTC芯片:高精度低功耗时间管理方案详解

1. 项目概述:为什么需要关注这颗RTC芯片?在嵌入式系统、智能仪表、工业控制器乃至高端消费电子产品的开发中,时间是一个看似简单却至关重要的维度。系统需要知道“现在是什么时候”,以便执行定时任务、记录事件日志、在预设时间唤…

2026/11/7 3:40:47 阅读更多 →
老药新用策略:系统性筛选与验证抗肝纤维化候选药物的全流程指南

老药新用策略:系统性筛选与验证抗肝纤维化候选药物的全流程指南

1. 项目概述:老药新用,对抗肝纤维化的新思路 肝纤维化,这个听起来有点专业的名词,其实是很多慢性肝病(比如病毒性肝炎、酒精肝、非酒精性脂肪肝)走向肝硬化甚至肝癌的必经之路。简单来说,就是肝…

2026/11/14 3:39:54 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/14 5:13:29 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/14 5:13:29 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/14 5:13:29 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/14 5:13:29 阅读更多 →

日新闻

周新闻

月新闻