【Rails】Active Jobで遅延実行とキュー指定を行う方法

Rails8 イメージ

Rails でバックグラウンド処理を書く時、すぐ実行するだけでなく「あとで実行したい」「優先度を分けたい」という場面が出てきます。
その基本になるのが Active Job の wait と queue_as です。

目次

wait で遅延実行する

一定時間後に実行したい時は set(wait:) を使います。

GuestsCleanupJob.set(wait: 1.week).perform_later(guest)

特定の日時で実行したい時は wait_until も使えます。

GuestsCleanupJob.set(wait_until: Date.tomorrow.noon).perform_later(guest)

queue_as でキューを分ける

ジョブ側で既定キューを分けるなら queue_as を使います。

class GuestsCleanupJob < ApplicationJob
  queue_as :low_priority
end

呼び出し時に上書きする

一時的に別キューへ流したい時は set(queue: …) で指定できます。

MyJob.set(queue: :another_queue).perform_later(record)

まとめ

Rails でジョブ処理を書くなら、wait と queue_as は早めに覚えておくと便利です。
遅延実行とキュー分離ができるだけで、運用の幅がかなり広がります。

参考一次情報

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次