2011-12-17 7 views
2

Microsoft Azureを使用していて、WebサービスとSQL Azureデータベースを持っているので、毎時間機能を実行したいが、これを行う方法がわからない。 Azure Worker Rolesとは関係がありますが、ワーカーロールを実行してWebサービスを呼び出す方法はわかりません。Azure - Webサービスで1時間ごとに関数を呼び出すジョブを実行するにはどうすればよいですか?

+0

[Azure Task Scheduler](http://stackoverflow.com/questions/571439/azure-task-scheduler)の可能な複製 – bryanmac

答えて

1

SQL AzureチームによるSQL Azure Agentプロジェクトとその偉大な記事への参照を確認してください。

+0

なぜ、紺碧の刻印でhttp/httpsのURLが使われるのですか? –

2

作業者の役割は常に実行されます。作業者の役割では、次のようにする必要があります。

  1. 機能がこの時間に実行されているかどうかを確認します。もしそうなら、何もしないでください。
  2. この時間に機能が実行されていない場合は、functionを実行します。
  3. この機能では、Webサービスを呼び出して、汚い仕事をしてください。
6

WebロールまたはワーカーロールのRun()メソッドでは、1時間前までスリープ状態になり、目を覚まして、必要なタスクを実行して実行するスレッドを開始できます戻って眠る。スケジューリングを行っているWebまたはWorker Roleの複数のインスタンスを持つ場合、それらのインスタンスのうち1つだけが実際にスケジューリングを行っていることを確認する必要があります。これを達成する1つの方法は、スケジューラスレッドを開始する前に、blobをリースすることです。あなたがそれをロックするなら、それのために行く。そうでない場合は、定期的に再確認してください。最終的に、ロックを取得したインスタンスは、インスタンスがリサイクルするときにロックを解放します(少なくとも月に1回は発生する)。

また、visibilitytimeoutのキューにメッセージを配置して、特定の時間帯に対応する特定の秒数を設定することもできます。その後、WebまたはWorkerの各インスタンスは、定期的にタスクを処理するためにキューをポーリングできます。キューにプッシュしたメッセージは、可視性のタイムアウト時間に達するまでキューリーダーに表示されません。

+0

+1のキュー。それがなぜ私に起こったのかわからない。 – danludwig

+0

ここでは、このビットはあなたのために行われたロジックのほとんどを持っています:https://github.com/jefking/King.Azure.BackgroundWorker –

+0

私はこのhttps://azure.microsoft.com/en- in/documentation/articles/scheduler-get-started-portal /。このタスクが実行されたかどうかはわかりますか? –