在我的网络应用中,用户可以创建需要在每月的特定日期生成和发送的定期发票。例如,可能需要在每个月的5号发送发票。
我正在使用Kue来处理我所有的后台工作,所以我也想在这种情况下这样做。
我目前的解决方案是每小时使用setInterval()
创建一个processRecurringInvoices
作业。然后,此作业将从数据库中查找所有定期发票,并为每个定期发票创建单独的generateInvoice
作业。
generateInvoice
作业将实际生成发票,如果需要,还会创建一个sendInvoiceToEmail
作业,通过电子邮件发送发票。
目前这个解决方案对我来说很好,因为它有一个很好的关注点,但是,我有以下问题:
processRecurringInvoices
工作上调用done()之前是否应等待所有'子'工作完成?processRecurringInvoices
工作还是应该为每项工作单独处理?processRecurringInvoices
或任何子作业仍在运行,则不会再次创建processRecurringInvoices
作业?有点像独特的工作,还是互相排斥?答案 0 :(得分:5)
kue.Job.rangeByType()
搜索当前有效的作业。如果某个作业处于活动状态,您可以跳过再次将其踢掉。