2015-09-09 21 views
8

以下のジョブを見ると、ジョブはlow_priorityキューで実行されていると仮定します。ActiveJobには特定の優先度を持つキューがありますか?

class GuestsCleanupJob < ActiveJob::Base 
    queue_as :low_priority 
    #.... 
end 

私はこれに同意するだろうが、これは正しいキューの名前だけでしょうか?それは実際には優先順位とは関係ありません。たとえば、:my_queueという名前のキューを持つジョブを作成した場合、そのジョブは:low_priorityキューと同じ優先順位を持つものとして扱われます。

ドキュメントからは、キューに入れられたジョブの優先順位付けが可能であることを示すものが見つかりませんでした。私はdelayed_jobsがこの機能を持っていることを知っていますが、私はそれをactive_jobで見つけられませんでした。

答えて

4

優先順位は実際のQueueAdapterと、このアダプタの構成方法によって異なります。あなたのアダプタが優先順位をサポートしていないか、または正しく設定されていない場合、ActiveJobはあなたを助けません。

ここからアダプタの詳細をご覧ください:

http://edgeapi.rubyonrails.org/classes/ActiveJob/QueueAdapters.html

メインテイクアウトはこれです:

主なポイントは、すべてのRailsアプリがで仕事の基盤を持っていることを保証することです場所。 Delayed JobやResqueなどのさまざまなジョブランナー間のAPIの違いについて心配することなく、フレームワーク機能やその他の宝石を構築することができます。あなたの待ち行列のバックエンドを選ぶことは、操作上の関心事になります。そして、あなたはあなたの仕事を書き直すことなくそれらの間を切り替えることができます。

キューの構成(優先度を含む)はアダプタの責任になります。キュー構成の一例として、

はSidekiqのwikiを参照してください。

https://github.com/mperham/sidekiq/wiki/Advanced-Options#queues

+1

はい、これは理にかなっているが、delayed_jobとsidekiqの両方をサポートキューと優先度とあなたがジョブレベルでこれを設定することができます。 delayed_jobまたはsidekiqアダプタを使用している場合は、アクティブジョブがこれをサポートしていますか?あなたがはいと言っているように聞こえますが、ドキュメントのどれも実際には役に立ちません。私はすでにあなたがこの質問を投稿する前に追加した参考文献を見てきましたが、何も見つけられませんでした。おそらく何か不足していますか? –

+0

これについては、アダプタのマニュアルを読む必要があります。 ActiveJobは抽象です。 – dimakura

+1

私はそれを理解しています。私はドキュメントを読んでいます - 私はdelayed_jobsを使用しています。あなたは例えば 'handle_asynchronously:send_mail :, priority => 20'のようにdelayed_jobでジョブの優先度を設定できます。sidekiqでは待ち行列と優先度を設定しているので、設定ファイル。遅れた仕事はこれを持っていないようです。私の質問は、優先順位を設定するためにActiveJobである抽象化を使用する方法です。これはActiveJobで可能ですか?またはdelayed_jobを使用する必要がありますか? ActiveJobのdelayed_jobアダプタを見ると、これは可能ではないようです。明確になるために何を言いたいのか分かりません。 –

関連する問題