5

優先順位がジョブ レベルで機能するのか、キュー/チューブ レベルで機能するのかについて、少し混乱しています。私が尋ねる理由は、私が Drupal で beanstalkd 統合モジュールを使用しているためです。このモジュールを使用すると、キュー/チューブを定義し、作成された各キュー/チューブに優先度の値を割り当てることができます。

私が解決しようとしているのは次のとおりです。Beanstalkd に 2 つのキュー/チューブ (キュー A とキュー B) があるとします。キュー A に割り当てられたアイテムの優先度がキュー B のアイテムよりも高い場合、キュー B のアイテムはキュー A が空の場合にのみ処理されるということですか?

4

1 に答える 1

2

優先度はジョブごとです。詳細については、https ://github.com/kr/beanstalkd/blob/master/doc/protocol.txt を参照してください。

ジョブの優先度がない場合、beanstalkd は FIFO キューとして動作します。

仕事の優先順位について知っておくべき 3 つの難しい事実があります。

  • 優先度番号が低いジョブは、優先度番号が高いジョブより先に予約されます。
  • beanstalkd の優先度は 32 ビットの符号なし整数です (範囲は 0 から 2^32 - 1)。
  • beanstalkd は、デフォルトのジョブ優先度 (beanstalkd.DEFAULT_PRIORITY) として 2^31 を使用します (クライアントはこれをオーバーライドする可能性があります。デフォルトは 1024 に設定されています)。

また、同じ優先順位のジョブは引き続き FIFO 方式で処理されることに注意してください。したがって、複数のチューブを監視するエージェントがあり、それらのチューブで同じ優先度のジョブを取得すると、FIFO 方式で予約されます。

https://github.com/ptrofimov/beanstalk_consoleでチューブとジョブを見ることができます

于 2014-04-17T10:15:12.533 に答える