Tag: 工作队列

如何使用Kue处理预定的重复作业?

在我的Web应用程序中,用户可以创build每月在特定date生成和发送的循环发票。 例如,发票可能需要在每个月的五号发出。 我正在使用Kue来处理所有的背景作业,所以我想在这种情况下也这样做。 我目前的解决scheme是使用setInterval()每小时创build一个processRecurringInvoices作业。 然后,该作业将从数据库中查找所有定期发票,并为每个定期发票创build一个单独的generateInvoice作业。 然后, generateInvoice作业将实际生成发票,如果需要的话,也将创build一个sendInvoiceToEmail作业,通过电子邮件发票。 目前这个解决scheme对我来说看起来不错,因为它有一个很好的问题分离,但是,我有以下问题: 我不确定是否应该在主processRecurringInvoices作业中调用done()之前等待所有“子”作业完成? 我应该在哪里处理错误? 我是否应该将它们传递给processRecurringInvoices作业,还是应该为每个作业单独处理? 如何确保如果处理需要超长时间(超过一个小时),并且processRecurringInvoices或任何子作业仍在运行, processRecurringInvoices作业不会再次创build? 有点像独特的工作,还是相互排斥?