現在、JRuby で Resque を使用しており、開発時にワーカーを開始する 2 つの方法を使用しています。
- レーキの使用:
QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work
- プログラムで、Sinatra Rack App (または何でも) を介して初期化され、最終的に次のクラスを呼び出します。
def start
@worker = Resque::Worker.new(@queues)
@worker.verbose = @vervose
@worker.work(@interval)
end
def stop
@worker.try(:shutdown)
end
これらのソリューションは両方とも、開発中は受け入れられます。たとえば、Tomcat にデプロイした場合にこれがどのように機能するかが心配です。
Ruby では通常、ワーカーを生成またはデーモン化してから、監視ツールを使用して pid を監視します。
デプロイ時にワーカーをプログラムで開始することは理にかなっていますか? javaで新しいスレッドを開始するか、jrubyプロセスを乱雑にするかどうか疑問に思っています.使用しない場合は、クォーツのような別のスケジューリングライブラリを使用してワーカーを開始しますか? またはデプロイタスクで起動するレーキタスク?
Worker モデルを作成して、データベース内のワーカーを追跡することもできますが、それは私には意味がありません。
ヘルプや知識をいただければ幸いです。
ありがとうございました。
参照:
https://github.com/defunkt/resque
http://rubydoc.info/github/defunkt/resque/master/Resque/
http://blog.thomasmango.com/post/636319317/resque-in-production