使用BLPOP的redis作业队列

Ale*_*rov 11 redis

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

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

Dan*_*ell 6

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

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

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

http://redis.io/commands/rpoplpush

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

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