Actualmente estamos utilizando Resque en JRuby y utilizamos dos formas de iniciar un Worker cuando desarrollamos.Thread Safe Resque Trabajadores en JRuby cuando se despliega como WAR
- Usando Rake:
QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work
- mediante programación, inicializado a través de un Sinatra bastidor aplicación (o lo que sea), con el tiempo llamando a una clase con:
def start
@worker = Resque::Worker.new(@queues)
@worker.verbose = @vervose
@worker.work(@interval)
end
def stop
@worker.try(:shutdown)
end
Aunque ambos estas soluciones son aceptables para nosotros en el desarrollo. Me preocupa cómo esto funcionaría cuando se implemente en Tomcat, por ejemplo.
En Ruby, normalmente engendraría o demonizaría a los trabajadores, y luego utilizaría una herramienta de supervisión para observar los PID.
¿Tendría sentido iniciar a los trabajadores programáticamente cuando se despliegan? Me pregunto si comienza un nuevo hilo en Java o desordena el proceso jruby, si no debería usar, otra biblioteca de programación como cuarzo para iniciar un trabajador. o una tarea de rake que se inicia en la tarea de implementación?
Podría crear un modelo de trabajador y luego hacer un seguimiento de los trabajadores en un db, pero eso no tiene sentido para mí.
Cualquier ayuda o conocimiento será apreciado.
Gracias.
Refs:
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
¿Cómo harías esto si tu aplicación JRuby/Rails se implementara a través de un archivo WAR en Tomcat? ¿Debo implementar 2 Tomcats, uno para el "servidor de rieles" y otro para el "entorno de rake resque: trabajo"? ¿Si es así, cómo? –