我正在开发一个 Rails 应用程序,将客户退款交给 Sweatshop 工作人员。如果退款失败(因为我们当时无法联系到付款处理器)我想重新排队工作。
class RefundWorker < Sweatshop::Worker
def process_refund(job)
if refund
Transaction.find(job[:transaction]).update_attributes(:status => 'completed')
else
sleep 3
RefundWorker.async_process_refund(job) # requeue the job
end
end
有没有比上面更好的方法来做到这一点?我在 RabbitMQ 中没有发现任何“延迟”功能,这是迄今为止我想出的最好的解决方案。我想在重新排队时避免繁忙的循环。