使用BLPOP的redis作业队列

时间:2011-08-30 09:41:56

标签: redis

我试图使用redis和ruby eventmachine创建无限的作业队列。为了实现这个我使用redis BLPOP命令0超时。成功的BLPOP之后我再次运行它。

我是以正确的方式还是有更好的方法来使用redis创建作业队列?

1 个答案:

答案 0 :(得分:6)

如果您单独使用BLPOP从队列中删除邮件,并且您的邮件消费者无法处理它,则必须重新排队该邮件,以免它与失败的使用者一起永久消失。

对于更持久的消息处理,必须维护正在处理的消息列表,以便在发生故障时可以重新排队。

[B] RPOPLPUSH非常适合这种情况;它可以从消息队列中自动弹出消息并将其推送到处理队列,以便应用程序可以在消费者端发生故障时进行响应。

http://redis.io/commands/rpoplpush

实际的重新排队留给应用程序,但是这个redis命令提供了这样做的基础。

还有一些使用redis漂浮在网络上的队列的现场实施,例如RestMQ [http://www.restmq.com/]