2011-04-28 2 views
5

현재 JRuby에서 Resque를 사용하고 있고 개발할 때 Worker를 시작하는 두 가지 방법을 사용합니다.스레드 안전성 Resque JRuby에서 작업자를 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에 배포 할 때 이것이 어떻게 작동 할까에 대한 걱정입니다.

루비에서는 일반적으로 작업자를 생성하거나 악의적으로 만든 다음 모니터링 도구를 사용하여 pid를 감시합니다.

배포시 Workers를 프로그래밍 방식으로 시작하는 것이 합리적입니까? 그것은 자바에서 새 스레드를 시작하거나 jruby 프로세스를 클러 터를 사용하면 안되는 지 궁금합니다. 작업자를 시작하기 위해 석영과 같은 다른 스케줄링 라이브러리를 사용해야합니까? 또는 배포 작업에서 시작되는 레이크 작업은 무엇입니까?

나는 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

답변

0

레일즈 환경을 부팅하고 작업에 대한 하나의 작업자, 설문 조사를 시작합니다 rake resque:work을 사용하여, 포크 ​​자체 (하위) 작업자 프로세스로 직장에서 끝내고 그 다음에 끝납니다.

여러 노동자를 실행하려면 다음 COUNT 변수 사용

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

이 어떤 측면은 톰캣에 배포 할 것입니까? 이것은 모두 명령 행입니다.

+0

JRuby/Rails 응용 프로그램이 WAR 파일을 통해 Tomcat에 배포 된 경우 어떻게 작성 하시겠습니까? 2 개의 Tomcat을 배치해야합니까? 하나는 "레일 서버"이고 다른 하나는 "rake environment resque : work"입니다. 그렇다면 어떻게? –

0

1 년이 넘었지만 당신이 찾고 있던 대답은 Resque worker를 (네이티브) Java 쓰래드로 응용 프로그램을 실행하는 것입니다. JRuby :: Rack을 사용하고 있기 때문에 대답은 JRuby::Rack::Worker입니다. 당신이 지저귀하는 경우

<context-param> 
    <param-name>jruby.worker</param-name> 
    <param-value>resque</param-value> 
</context-param> 
<!-- 
<context-param> 
    <param-name>QUEUES</param-name> 
    <param-value>mails,posts</param-value> 
</context-param>--> 

<listener> 
    <listener-class>org.kares.jruby.rack.WorkerContextListener</listener-class> 
</listener> 

그냥 설정/web.xml.erb 파일을 만들 web.xml.erb 샘플 https://github.com/kares/jruby-rack-worker 거기에 콘텐츠를 복사하여 web.xml에이 추가 그걸로 ...Trinidad를 사용하면 extension이 내장되어 있으므로 web.xml을 설정하고 .jar 파일을 복사 할 필요가 없습니다.