3

Azure Web サイトで継続的な Web ジョブを実行しています。QueueTrigger からアイテムを取得した後、いくつかの作業を行う責任があります。アイテムがキューから処理される速度を上げようとしています。App Service プランをスケールアウトすると、予想どおりに処理速度が向上します。

私の懸念は、Web ジョブの追加インスタンスを実行するためだけに追加の VM にお金を払うのは無駄に思えることです。単一のサーバーで同じ Web ジョブの複数のインスタンスを実行するためのオプション/ベスト プラクティスを探しています。

Main() 内の個々のスレッドで複数の JobHosts を開始しようとしましたが、それが機能しないか、何か間違ったことをしていました...各スレッドが「WebJobSdk.マーカー'。私の現在の解決策は、Web ジョブを複数回発行することです。そのたびに「webjob-publish-settings.json」の「webJobName」を少し変更して、発行時に同じプロジェクトが別の Web ジョブと見なされるようにします。これは今のところうまく機能していますが、更新が必要になるたびに多くの追加作業が発生することを期待してください。

最終的に、これを達成するための推奨される方法についてのアドバイスを探しています。理想的には、コードを介して複数のインスタンスを実行し、コードを更新する必要があるときに一度だけ公開する必要があります。

そこに何か考えはありますか?

4

1 に答える 1

4

JobHostConfiguration.QueuesConfiguration を使用できます。キュー処理の同時実行レベルを制御するためのBatchSizeおよびNewBatchThreshold設定。後者の NewBatchThreshold 設定は、現在進行中の beta1 リリースで新しく追加されました。ただし、Nuget パッケージ マネージャーで「プレリリース」パッケージを有効にすると、試してみたい場合に新しいリリースが表示されます。NewBatchThreshold 設定を上げると、同時実行レベルが上がります。たとえば、100 に設定すると、現在実行中のキュー関数の数が 100 を下回ると、メッセージの新しいバッチが同時処理のためにフェッチされます。

マーカー ファイルのバグは、このコミットでしばらく前に修正され、現在進行中の v1.1.0 リリースの一部です。

于 2015-09-22T02:46:01.273 に答える