目前我们在JRuby中使用Resque,并且在开发时我们使用两种方式启动Worker。JRuby中的线程安全Resque Workers部署为WAR时
- 使用耙:
QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work
- 编程,经过初始化的西纳特拉机架应用程序(或其他),最终调用了一类:
def start
@worker = Resque::Worker.new(@queues)
@worker.verbose = @vervose
@worker.work(@interval)
end
def stop
@worker.try(:shutdown)
end
虽然这两个这些解决方案对我们来说是可以接受的。例如,我担心部署到Tomcat时会如何工作。
在Ruby中,通常情况下,你会产生或妖魔化工人,然后使用监视工具来观察PID。
在部署时以编程方式启动Workers是否有意义?我想知道是否它开始在java中的新线程或混乱jruby进程,如果不是我应该使用,但另一个调度库像石英启动一个工人?或在部署任务中启动的rake任务?
我可以创建一个Worker模型,然后让它跟踪db中的工作人员,但这对我没有意义。
任何帮助或知识将不胜感激。
谢谢。
参考文献:
https://github.com/defunkt/resque
http://rubydoc.info/github/defunkt/resque/master/Resque/
http://blog.thomasmango.com/post/636319317/resque-in-production
https://gist.github.com/486161
如果您的JRuby/Rails应用程序通过WAR文件部署到Tomcat中,您将如何完成这项工作?我是否必须部署2个Tomcat,一个用于“rails server”,一个用于“rake environment resque:work”?如果是这样,怎么样? – 2012-01-31 18:18:26