¿Cuál es la mejor opción para una biblioteca Trabajador de Rubí marco agnóstica?
-
06-09-2019 - |
Pregunta
Estoy construyendo un motor de búsqueda simple receta con Ruby y Sinatra para una aplicación para el iPhone, usando RabbitMQ para mi cola de mensajes. Estoy mirando a su alrededor y encontrar una gran cantidad de diferentes opciones de implementación de procesos en segundo plano, pero la mayoría de ellos, ya sea aplicar algoritmos de mensajes personalizados de cola u operar como carriles plugins.
¿Qué hay ahí fuera en términos de bibliotecas trabajador independiente del marco de alta calidad que va a jugar muy bien con RabbitMQ?
Y ¿hay mejores prácticas que debería tener en cuenta al escribir el código del trabajador, más allá de lo obvio:
# BAD, don't do this!
begin
# work
rescue Exception
end
Solución 2
terminé escribiendo mi propia biblioteca en un ataque de incontrolable Yak-afeitar . Kit de demonio era la idea general bien, pero en serio demasiado peso pesado para mis necesidades. No quiero que lo que parece ser una aplicación de rieles completo para cada uno de mis demonios. Voy a terminar con al menos 3 demonios, y eso sería un desastre colosal de directorios. La gema demonios tiene una API horrible, y mientras yo estaba tentado de abstraer a la basura, me di cuenta de que probablemente era más fácil simplemente manejar el tenedor a mí mismo, así que eso es lo que hice.
API es el siguiente:
require "rubygems"
require "chaingang"
class Worker
def setup
# Set up connections here
end
def teardown
# Tear down connections here
end
def call
# Do some work
sleep 1
end
end
ChainGang.prepare(Worker.new)
Y a continuación, sólo tiene que utilizar la tarea rake incluido para iniciar / detener / reiniciar y comprobar su estado. Tomé una página del libro del estante: cualquier cosa que implementa el método call
es juego limpio como un argumento a los métodos ChainGang.prepare y ChainGang.work, por lo que un Proc
es un objeto válido trabajador
Me llevó más tiempo para construir lo que habría que usar algo más, pero tengo una vaga sospecha de que va a pagar en el largo plazo.
Otros consejos
Estoy utilizando habichuelas mágicas y he escrito mis propios demonios usando el demonios joya . Daemon kit es un nuevo proyecto, pero bucles de cola aún no se implementan. También puede echar un vistazo a nanite si se ajusta a sus necesidades, es independiente del marco .
Salida nanite (escrito en Ruby), que es un proyecto joven por escrito en lo alto RabbitMQ.
github.com/ezmobius/nanite/tree/master