2012-03-05 63 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