我有一个JRuby/Rails应用程序,它被部署为WAR文件并在Tomcat应用程序服务器中运行。我想使用delayed_job或Resque作为工具来执行长时间运行的作业,这些作业通过我的Rails应用程序使用的相同ActiveRecord子类来存储数据库。我希望它在不同的进程或线程中运行,以免让我的应用程序面向网络的一面看起来很慢。如何将JRuby Resque进程部署为war文件?
包含并使用delayed_job或Resque的说明很清楚。例如,一旦我已经做了所有的暗中捣鬼的使用Resque,我只是要做:
QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work
但是,这只能通过命令行的作品。我如何获取它,以便通过将WAR文件部署到Tomcat来运行我的Resque进程?如果是这样,它是否是具有不同配置或不同WAR文件的相同WAR文件?如果它是一个不同的WAR文件,我该如何生成它?我需要第二个Tomcat进行Resque/DJ过程吗?有没有办法将Resque/DJ进程放到自己的JRuby/JVM线程中?是否有任何配置jiggery-pokery我必须做的才能实现这个目标?
我认为这意味着在配置/初始化/ resque.rb我会写如:require'java'; Thread.new做XXXXXX结束。什么是XXXXXX,以便我可以使用Resque任务启动JRuby线程? – 2012-01-30 23:57:22
我最终通过编写脚本启动了这个工作,该脚本在WAR文件在部署服务器上爆炸后启动Resque进程。即没有Tomcat,只有JRuby。也许我对Tomcat的理解是有缺陷的。 Tomcat是否将你限制在一个进程中?如果是这样,我是否必须在不同的Tomcat中部署Resque?如果没有,我怎样才能启动Resque而不依赖于爆炸WAR文件的Web应用程序? – 2012-12-23 15:18:55