目前我們在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