2012-01-30 8 views
0

WAR 파일로 배포되어 Tomcat 응용 프로그램 서버에서 실행되는 JRuby/Rails 응용 프로그램이 있습니다. delayed_job 또는 Resque를 도구로 사용하여 장기 실행 작업을하고 싶습니다.이 작업은 Rails 응용 프로그램에서 사용하는 동일한 ActiveRecord 하위 클래스를 통해 데이터베이스를 통해 실행됩니다. 그리고 나는 그것을 다른 프로세스 나 스레드에서 실행하여 응용 프로그램의 웹 측이 느리게 보이지 않도록하고 싶습니다.JRuby Resque 프로세스를 war 파일로 배포하는 방법은 무엇입니까?

delayed_job 또는 Resque를 포함하고 사용하는 방법은 매우 명확합니다. 명령 줄에서

QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work 

하지만이 단지 작품 예를 들어, 한 번 내가 Resque을 사용하는 속임수의 모든 일을, 나는 단순히해야한다. Tomcat에 WAR 파일을 배포하여 Resque 프로세스를 실행할 수 있도록 어떻게 얻을 수 있습니까? 그렇다면 다른 설정이나 다른 WAR 파일을 가진 동일한 WAR 파일입니까? 다른 WAR 파일 인 경우 어떻게 생성합니까? Resque/DJ 프로세스를 위해 두 번째 Tomcat이 필요합니까? Resque/DJ 프로세스를 자체 JRuby/JVM 스레드에 넣는 방법이 있습니까? 이 일을하기 위해 내가해야만하는 설정상의 위키집이 있습니까?

답변

0

JRuby는 ARGV[0] =~ /ruby$/ 인 쉘 명령을 인식하고이를 프로세스 내에서 실행하므로 사용자가 유용하게 사용할 수 있습니다. Rakefile을 war 파일에 포함한다고 가정하면 응용 프로그램 초기화 프로그램에서 비슷한 명령으로 스레드를 시작하고 Resque를 시작할 수 있습니다. Bundler를 사용하고 있다면, 이미 환경 설정이되어있을 것이고 이는 진행중인 하위 JRuby로 전달되어야합니다.

+0

나는 이것이 config/initializers/resque.rb에서 다음과 같은 것을 쓸 것이라고 가정한다 : require 'java'; Thread.new XXXXXX 끝내기. Resque 작업으로 JRuby Thread를 시작할 수 있도록 XXXXXX는 무엇입니까? –

+0

결국 배포 서버에서 WAR 파일을 분해 한 후 Resque 프로세스를 시작하는 스크립트를 작성하여이 작업을 수행했습니다. 즉 No Tomcat, JRuby. Tomcat에 대한 나의 이해가 잘못되었을 수도 있습니다. Tomcat이 당신을 한 프로세스로 제한합니까? 그렇다면 Resque를 다른 Tomcat에 배포해야합니까? 그렇지 않다면 WAR 파일을 폭발시키는 웹 응용 프로그램에 의존하지 않고 Resque를 시작하려면 어떻게해야합니까? –