継続的に実行するように構成された Web サイトに関連付けられた Web ジョブがあり、メッセージのキューを監視して処理するだけです。
私のウェブサイトは共有モードで、現時点ではトラフィックがほとんどないため、このテストの一環としてウェブサイトがシャットダウンされないように、1 分ごとにホームページを要求するダミー サービスをセットアップしました。予想通り、ウェブサイト自体がシャットダウンされていないことに気付くことができます。ただし、この Web ジョブは、Azure 管理ポータルにアクセスして Web ジョブの状態を確認しない限り、約 1 時間でシャットダウンし続けます。そこに行くとすぐに再起動し、数分から1時間でシャットダウンします。
この Web ジョブのログ ファイルには、次のような内容が表示されます。
[02/13/2015 09:19:45 > 4660f6: INFO] Job host started
[02/13/2015 10:19:41 > 4660f6: SYS INFO] WebJob is still running
[02/13/2015 10:20:35 > 4660f6: SYS INFO] WebJob is stopping due to website shutting down
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopping
[02/13/2015 10:20:35 > 4660f6: INFO] Job host stopped
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Success
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopped
Web サイトがまだ実行されており、ホームページが返されていることがわかりますが、ジョブ自体は停止しています。
管理ポータルにログインしてステータスを探すと、ログに次のように表示されます。
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Success
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopped
[02/13/2015 14:56:15 > 4660f6: SYS INFO] Status changed to Starting
[02/13/2015 14:56:17 > 4660f6: SYS INFO] Run script 'WebJobs.exe' with script host - 'WindowsScriptHost'
[02/13/2015 14:56:17 > 4660f6: SYS INFO] Status changed to Running
[02/13/2015 14:56:19 > 4660f6: INFO] Found the following functions:
[02/13/2015 14:56:19 > 4660f6: INFO] WebJobs.NotificationsProgram.ProcessQueueMessage
[02/13/2015 14:56:19 > 4660f6: INFO] WebJobs.NotificationsProgram.PublishNotification
[02/13/2015 14:56:19 > 4660f6: INFO] WebJobs.NotificationsProgram.ProcessMessages
[02/13/2015 14:56:19 > 4660f6: INFO] Job host started
Web サイトがアクティブである限り Webjob がアクティブであることを確認するにはどうすればよいですか? または、少なくとも実行状態に戻ったときに、Web サイトが Web ジョブも開始するようにします。
更新 1
私の webjob 自体は、以下に示すように非常に単純なものです。
static void Main(string[] args)
{
JobHost host = new JobHost();
host.RunAndBlock();
}
トリガー関数は次のようになります。
public static void WriteLogPOCO([QueueTrigger("logqueue")] BlobInformation blobInfo, TextWriter logger)
{
logger.WriteLine("Queue message refers to blob: " + blobInfo.BlobName);
}
このジョブが Web サイトのライフサイクルに従う必要があることを示すために、ここで何かしなければならないことはありますか。つまり、Web サイトが開始されるたびに開始されます。
更新 2
Process Explorer を確認しようとしましたが、Web ジョブが停止すると、3 つのことのいずれかが表示されます。管理ポータルに行かずにジョブ ログを表示する方法がわからないため、現時点では実際のログがわかりません。
しかし、管理ポータルに移動するまでキューからのメッセージを処理しないため、ジョブが実行されていないことは確かです。
以下に示す pingdom の結果は、Web サイト自体が中断することなく実行されていることを示しています。
よろしくキラン