概要
- Resque https://github.com/resque/resque
- Rubyで動作するキュー制御のライブラリ。バックエンドはRedis
-
Resque.enqueue()でジョブをキューとして投入、Resque::Workerが投入されているジョブを拾い上げる→forkしたプロセス上でジョブを実行する - rakeから使うのが基本のようだが、rubyコードからも呼び出し可能
- pluginが充実しているが、かなり内部構造をいじるpluginもあるため、pluginによっては競合する可能性がある。例えばresque-statとresque-workers-lockは同時に使うのが困難な模様
- 非常にシンプルな作りで、実行後のジョブがどのように終了したかなどは関知しない。基本ジョブ自身に丸投げ。
基本的な使い方
インストール
事前にredis serverが必要。Ubuntuならaptitude install redis-serverとかで。resque自身のインストールは以下のコマンド。
% gem install resque
ジョブクラス
require "resque"
class OreJob
@queue = :ore_job_test
def self.perform(*args)
puts args[0]
# working
rescue Resque::TermException
puts 'Interrupted'
end
end
キュー作成
require "resque"
Resque.enqueue(OreJob, "hoge")
ワーカー
require "resque"
# ジョブクラスの@queueに指定した内容と同じものを引数で渡す
wk = Resque::Worker.new(:ore_job_test)
# wk.workを実行すると延々とキューを探し続ける
wk.work