Beanstalkd 中的优先级是否跨队列/管工作?

Ben*_*jen 5 drupal beanstalkd pheanstalk

我对优先级是否在工作或队列/管道级别起作用感到有些困惑。我问的原因是我在 Drupal 中使用 beanstalkd 集成模块。该模块使人们能够定义队列/管并为创建的每个队列/管分配优先级值。

我正在努力解决以下问题。假设我在 Beanstalkd 中有两个队列/管(队列 A 和队列 B)。如果分配给队列 A 的项目的优先级高于队列 B 中的项目,这是否意味着只有在队列 A 为空时才会处理队列 B 中的项目?

Pen*_*m10 2

优先级取决于每个作业,您可以在以下位置阅读更多相关信息: https: //github.com/kr/beanstalkd/blob/master/doc/protocol.txt

如果没有作业优先级,beanstalkd 将作为 FIFO 队列运行。

关于工作优先级,需要了解三个不容忽视的事实:

  • 具有较低优先级编号的作业在具有较高优先级编号的作业之前被保留。
  • beanstalkd 优先级是 32 位无符号整数(范围从 0 到 2^32 - 1)。
  • beanstalkd 使用 2^31 作为默认作业优先级(beanstalkd.DEFAULT_PRIORITY)(客户端可以覆盖它,我见过默认设置为 1024)。

另请注意,在相同优先级内,作业仍以 FIFO 方式处理。因此,如果您有一个代理监视多个管道,并且当您在这些管道上获得相同优先级的作业时,它们将以 FIFO 方式保留。

您可以使用https://github.com/ptrofimov/beanstalk_console观看管道和作业