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
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top