简介
kue 是一个基于 Node.js 的任务队列工具,可以用来处理异步(或延迟)任务,如发送邮件、消息推送等。kue 支持任务优先级,延迟执行,最大尝试次数等功能,可以帮助我们更加简便地管理和执行任务。
安装
使用 npm 进行全局安装:
npm install kue -g
基本使用
创建任务
-- -------------------- ---- ------- ----- --- - --------------- ----- ----- - ------------------ ----- --- - --------------------- - ------ ------- --- ---------------------- -------- ------ -- ----------------- ------------ ------------ ----------- -- - -- ----- ------------------- ------------------------------------ ---
上述代码创建了一个名为 email
的任务,并设置了任务的优先级为 high
,最大尝试次数为 5 次,延迟时间为 1 秒钟。此任务被添加到任务队列中,并生成了一个唯一的 ID。
处理任务
queue.process('email', (job, done) => { console.log(`开始处理任务:${job.id}`); // 处理任务 // ... // 根据处理结果调用 done 函数 done(null, '任务处理成功'); });
上述代码使用 queue.process
方法来定义任务类型,并指定在任务队列中有该类型的任务时该如何处理它。当有该类型任务被加入任务队列时,queue.process
方法将会调用传入的回调函数。回调函数的第一个参数是任务对象,第二个参数则为完成任务的函数。在任务完成后调用完成任务的函数,并可附带任务处理结果。
获取任务状态
const job = kue.Job.get(id, (err, job) => { if (err) console.error(err); if (job) { console.log(`任务状态:${job._state}`); } });
使用 kue.Job.get
方法可以获取任务的状态,你需要传入该任务的 ID 和一个回调函数,回调函数的第一个参数为可能的错误,第二个参数则为任务对象。在任务对象中 _state
属性表示该任务的状态,如 queued
表示任务在队列中等待执行,failed
表示任务已经尝试了最大次数但仍未成功执行。
附加功能
任务优先级
const lowPriorityJob = queue.create('email', { title: '低优先级邮件', to: 'example@example.com', content: '请查收' }).priority('low').save();
延迟执行
const delayedJob = queue.create('email', { title: '延迟任务', to: 'example@example.com', content: '请查收' }).delay(5000).save();
失败重试
const job = queue.create('email', { title: '可能失败的任务', to: 'example@example.com', content: '请查收' }).attempts(3).backoff({ delay: 60 * 1000 }).save();
在上述代码中,我们设置这个任务最大尝试 3 次,在任务失败后尝试的时间间隔为 60 秒。在每次任务失败时,延迟执行尝试的时间会增加。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67277