WindowsAzureアプリケーションにジョブスケジューラを実装したいと思います。
私の目的は、特定のアプリケーションを毎日特定の時間に実行することです。その実装のために私はいくつかの選択肢があります
1-Quartz.netを使用する
2-Windowsスケジューラ
それを実装するためにC#.netで利用可能な組み込みメソッドがある場合。私はWindowsAzureHPCスケジューラについて苦労しています。スケジューラーですか?
最近、ジョブスケジューラ機能がWindows Azureに追加され、特定の間隔でジョブを簡単にスケジュールできるようになりました。
これらのジョブを使用してWebサイト、Webロール、さらにはワーカーロールと通信する方法を説明するブログ投稿は次のとおりです。http://fabriccontroller.net/blog/posts/job-scheduling-in-windows-azure/
Windows Azureでスケジューリングを行うときは、覚えておく必要のあることがあります。Web /ワーカーロールのインスタンスを複数持つことができます。つまり、スケジュールされたタスクが複数回実行される可能性があることを考慮する必要がありますが、それは望ましくない場合があります。
ServiceBusQueuesを使用してスケジューリングシステムを作成することを検討してください。BrokeredMessageクラスには、 ScheduledEnqueueTimeUtcと呼ばれる興味深いプロパティがあり、メッセージをキューに入れる(利用可能にする)タイミングをスケジュールできます。これにより、たとえば1時間ごとに表示されるメッセージでキューを埋めることができます。
また、Service Bus Queuesを使用してこのような実装を構築する場合は、メッセージを最大1回(ReceiveAndDelete)または少なくとも1回(PeekLock)処理することを決定できます。
スケジューリングはこれまで何度も回答されてきましたが(これが重複していると私が提案した理由です)、対処されていないいくつかの具体的な質問をしたことに気付きました。
スケジューラーの作成に関する詳細を提供する回答を提供しているので、私が参照した他の回答を見てください。
ScheduledEnqueueTimeUtcプロパティを使用してメッセージのキューイングを遅らせる場合、キューに送信される前にメッセージがどこにストックされているのか疑問に思いましたか?Web / Workerロールのインスタンスが2つある場合、どうなるでしょうか。
2つのシナリオ:1。-InstanceAはメッセージをキャッシュに保存し、キューに配信されるのを待機します-InstanceAは何らかの理由で失敗します。-メッセージは永久に失われます。
どちらの場合も、解決策は信頼できないようです。