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/10/5 12:36:35 阅读更多 →
EPSON RX8010SJ RTC芯片:高精度低功耗时间管理方案详解

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

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

2026/10/8 16:17:53 阅读更多 →
老药新用策略:系统性筛选与验证抗肝纤维化候选药物的全流程指南

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

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

2026/10/15 8:31:39 阅读更多 →

最新新闻

ROS2小车网页直控:单进程WebSocket桥接实现

ROS2小车网页直控:单进程WebSocket桥接实现

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

2026/10/18 2:16:57 阅读更多 →
ESP32模块化应用商店:固件热更新与边缘设备管理实践

ESP32模块化应用商店:固件热更新与边缘设备管理实践

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

2026/10/18 2:16:57 阅读更多 →
Linux下HTTP排障全指南:从报文解剖到抓包实战

Linux下HTTP排障全指南:从报文解剖到抓包实战

先交代一个背景。很多年前我开始接手某台业务服务器的接口排查,遇到超时第一反应是去盯 TCP 层,看到一堆重传就怀疑机房网络,折腾一晚上毫无进展。后来旁边一位老同事用 tcpdump 按端口抓了完整会话,才发现问题出在一行 Connectio…

2026/10/18 2:16:57 阅读更多 →
氮化镓快充直驱控制器:8大厂商布局与核心技术解析

氮化镓快充直驱控制器:8大厂商布局与核心技术解析

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

2026/10/18 2:16:57 阅读更多 →
纯HTML Canvas图表插件:折线图、柱状图与饼图一次实现

纯HTML Canvas图表插件:折线图、柱状图与饼图一次实现

简介:统计折线图、柱状图与饼图一体的纯HTML图表插件,面向Web前端初学者、需要快速产出数据报表的开发者。压缩包共1个文件,为单个HTML文件,大小约3KB,浏览器直接打开即可体验。插件以原生HTML/CSS/JS结合第三方图表库…

2026/10/18 2:16:57 阅读更多 →
2009数模A题血管应力仿真MATLAB工程复现指南

2009数模A题血管应力仿真MATLAB工程复现指南

简介:本资源为2009年全国大学生数学建模竞赛A题参赛论文及配套源码,面向数学建模初学者、备赛学生与高校指导教师,聚焦实际工程问题的建模求解全流程实践。压缩包共9个文件,含5个txt文本(记录数据处理、评价结果、模型…

2026/10/18 2:15:57 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →