如果队列非常大并且需要一段时间来处理,如何将就绪队列中的beanstalkd作业移动到前面?

时间:2012-11-16 00:43:35

标签: beanstalkd

关于beanstalkd队列我有一个简单的问题。

所以说我在beanstalk队列中有500,000个就绪作业,它们只是等待处理,同时更多的作业被添加到这个队列中。所有这些工作都有同样的优先权。

是否可以在就绪队列中移动作业,以便可以在该队列中的所有其他作业之前处理该作业?

我刚开始使用beanstalk,我想知道在beanstalk中是否可以做到这一点?

我在Linux环境中。

我想我可以删除该特定作业并重新插入优先级,以便首先处理它,但我希望避免这样做,除非有一个允许我这样做的命令。

如果需要更多信息,请告诉我,我们提前感谢您的帮助。 :)

2 个答案:

答案 0 :(得分:0)

目前在Beanstalkd中没有这样的命令。

这就是使用不同优先级的原因。

答案 1 :(得分:0)

从 1.12 版开始,Beanstalk 有一个新命令:reserve-job

<块引用>

一个工作可以通过它的 ID 来保留。为客户端保留作业后,客户端在作业超时之前运行 (TTR) 作业的时间有限。当作业超时时,服务器会将作业放回就绪队列。命令如下所示:

reserve-job <id>\r\n

<id> 是要保留的作业 ID

这应该立即返回以下响应之一:

NOT_FOUND\r\n 如果作业不存在或被客户保留,或者未准备好、埋藏或延迟。 RESERVED <id> <bytes>\r\n<data>\r\n。请参阅保留命令的说明。

假设您知道需要调整优先级的作业的 ID,您可以连接到 beanstalk,保留该特定作业,然后release 使用新的优先级:

release <id> <pri> <delay>