如何与记录更新同时运行批处理作业



我有一个铁轨应用

目前,我有一个Que支持的作业,每天运行一次,并使用.find_in_batches(batch_size: 100)选择批次发票。我标记了其他常见的作业库,因为我敢肯定同样的问题也会解决。注意但是,Que是由数据库支持的,而不是由Redis支持。

问题是,在这一刻,客户可能会支付发票,并且延迟费将被添加到付费发票中。

我不确定如何以表演方式(或任何方式,说实话)。

我将为数百万的行做此操作,因此该方法必须快速。

这样做的不同策略是什么?

我认为您已经概述了矛盾。您想以表演方式做一些与que相关的事情,而您的队列是备份数据库。

我做了类似的事情,并且使用sidekiq拥有丰富的经验。我将拥有第一份工作DO .find_in_batches(...),并使用它来安排每个逾期发票作为单独的工作。

当作业运行时,如果支付发票,则需要进行重新检查,然后再添加费用。

使用Sidekiq为此,默认情况下,每个sidekiq进程都将有25名工人,这大大提高了绩效。您可以根据需要进行微调并扩大Sidekiq过程的量。缩放Sidekiq确实是一种荣幸!请注意,数据库连接可能会成为一个障碍。

最新更新