私は、顧客の払い戻しがスウェットショップの労働者に渡されるRailsアプリケーションに取り組んでいます。払い戻しが失敗した場合(その時点で支払い処理業者に連絡できないため)、ジョブを再キューイングしたいと思います。
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に「遅延」機能は見つかりませんでした。これは、これまでに考え出した中で最高のソリューションです。再キューイング中のビジーループを回避したい。