2011-08-30 16 views
11

Im tratando de crear cola de trabajos infinita usando redis y ruby ​​eventmachine. Para lograr eso estoy usando el comando redis BLPOP con 0 timeout. Después de BLPOP exitoso, lo vuelvo a ejecutar.Cola de trabajos con redis usando BLPOP

¿Estoy en el camino correcto o hay una mejor manera de crear cola de trabajos con redis?

+0

Hay varios artículos/recursos con respecto a este escenario, aquí es una: - [Colas Redis : Un uso emergente] (http://nosql.mypopescu.com/post/426360602/redis-queues-an-emerging-usecase) – yojimbo87

Respuesta

6

Si utiliza BLPOP solo para eliminar un mensaje de la cola, y su consumidor de mensajes no puede procesarlo, el mensaje tendrá que volver a colocarse en la cola, para que no desaparezca para siempre junto con el consumidor fallido.

Para un procesamiento de mensajes más duradero, se debe mantener una lista de los mensajes que se procesan para que puedan volver a ponerse en cola en caso de error.

[B] RPOPLPUSH es perfecto para este escenario; puede mostrar de forma atómica un mensaje de la cola de mensajes y lo coloca en una cola de procesamiento para que la aplicación pueda responder en caso de que falle el consumidor.

http://redis.io/commands/rpoplpush

real re-colas se deja a la aplicación, pero este comando Redis proporciona las bases para ello.

También hay algunas implementaciones gota en el lugar de colas utilizando Redis flotando alrededor de la web, como RestMQ [http://www.restmq.com/]

Cuestiones relacionadas