2012-03-05 47 views
3

有誰知道部署在Windows服務器上的JRuby的工作後臺作業解決方案? (通過鶯和雄貓)在Windows上部署JRuby的任何後臺進程寶石?

我正在尋找一種方法來安排從我的Rails 3.2應用程序的後臺作業,以便Web應用程序可以立即響應,而不是在長時間運行的作業運行時掛斷。

我試過了delayed_job gem,只是它似乎不適用於JRuby和Windows。 (如果我錯了,請賜教)resque取決於redis,它顯然不支持Windows。我沒有Beanstalkd或Starling的經驗,但他們的文檔沒有提到窗口。

我很喜歡轉儲窗口,相信我,但後臺作業是一個沒有源代碼的Windows可執行文件。我需要使用JRuby來調用一些Java代碼。

+0

我還沒有在Rails 3.x上測試過'delayed_job',但我已經在Rails 2.x和JRuby上使用了很長時間了。你遇到什麼錯誤? – 2012-03-05 04:40:43

+0

在Windows服務器上?問題在於讓工人的工作開始。一旦我回到網絡問題,我會立即發佈確切的錯誤。 – 2012-03-05 16:10:06

+0

命令「jruby -X + O delayed_job start」得到「NotImplementedError:fork在此平臺上不可用」 – 2012-03-05 18:33:26

回答

4

使用JRuby的機架工人寶石,http://github.com/kares/jruby-rack-worker,讓您使用delayed_job的調度作業的問題解決了,只是提供了一種不同的方式來開球工作進程這對JRuby/Warbler/Tomcat更友好。

+0

如果您打算降級我的答案,剛剛發佈解決方案,我發現一個鏈接,至少有禮貌足以解釋你的理由。 – 2012-03-09 03:26:28

+0

這對JBOSS,Weblogic,Websphere有用嗎? – 2016-06-06 23:54:50

+1

@JeffK這個答案已經超過4歲了。我知道我用Tomcat測試了它,我似乎記得我們也使用它來與JBOSS一起工作。從未嘗試過使用Weblogic或Websphere。鑑於4年的新開發和Rails和JRuby的新版本,現在可能有其他選項可用。 – 2016-06-08 01:06:00

3

爲此,我們使用Rufus Scheduler。調度配置坐落在一個初始化文件,像這樣:

scheduler = Rufus::Scheduler.start_new 
scheduler.every('1d') do 
    puts "I run once every day" 
end 

scheduler.every '3h' do 
    puts "I run every 3 hours" 
end 
+0

我曾經在Rufus過去的各種應用程序容器上工作過。你在使用什麼應用程序容器以及jRuby版本是什麼? – 2016-06-06 23:54:12

+0

我們當時使用了PIK和最新的JRuby版本。不過,請注意,這個答案現在是4歲,所以事情可能已經發生了很大的變化。如果有疑問,請繼續並在SO上創建一個新問題。 – emrass 2016-06-07 11:28:52

+0

您能否介紹一下如何使用Rufus調度程序啓動一名工人?我們使用Rufus來安排一些工作,現在正在考慮使用Delayed Jobs進行一些異步處理。如果我們能夠使用Rufus調度程序啓動一名工人,這將非常有幫助。 – user3075906 2016-11-02 21:43:52