微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 如何使用Kue处理预定的重复性作业?

在我的webapp中,用户可以创建需要生成并在每个月的某些日期发送的定期发票.例如,可能需要在每个月的5号发送发票.

我正在使用Kue处理我所有的后台工作,所以我也想在这种情况下这样做.

我目前的解决方案是使用setInterval()每小时创建一个processRecurringInvoices作业.然后,此作业将从数据库中查找所有定期发票,并为每个定期发票创建单独的generateInvoice作业.

然后,generateInvoice作业将实际生成发票,如果需要,还将创建sendInvoicetoEmail作业,该作业将通过电子邮件发送发票.

目前这个解决方案对我来说很好,因为它有一个很好的关注点,但是,我有以下问题:

>在主processRecurringInvoices工作上调用done()之前,我不确定是否应等待所有’子’作业完成?
>我应该在哪里处理错误?我应该将它们传递给processRecurringInvoices工作,还是应该为每个工作单独处理它们?
>如何确保如果处理需要很长时间(超过一小时),并且processRecurringInvoices或任何子作业仍在运行,则不会再次创建processRecurringInvoices作业?有点像独特的工作,还是互相排斥?

解决方法

>而不是“processRecurringInvoices”,可能更容易将其视为启动其他单独的发票处理工作的工作.通过这种方式考虑,一旦发票处理作业被排队,您就可以安全地在完成任务的工作上调用done(). >按照问题1中描述的方式思考问题,应在每个单独的发票处理工作中处理错误.如果发现潜在发票作业时发生错误,那么可能会在processRecurringInvoices作业中处理. >您可以使用kue.Job.rangeByType()来搜索当前活动的作业.如果作业处于活动状态,您可以跳过再次将其踢掉.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐