none
AzureCloudServiceのOSシャットダウン時に処理を行う方法 RRS feed

  • 質問

  • ■環境

    ・Azure環境: Cloud Service

    ・サーバ:Windows Server 2012 R2

    ・デプロイ方法:EclipseでのAzureプラグインを使用

    ■問題

    ・OSシャットダウンを検知して数10秒程度の処理(Azure Blob Strageへファイルをアップロード)をしたいができない。

    ■現状

    1. サーバ上のメイン言語はJavaを使用しているのでJVMのシャットダウンフックを利用しようとしたが、Ctrl+Cの終了は検知できても、OSのシャットダウンは検知できなかった。http://docs.oracle.com/javase/jp/7/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)

    2. C#でSystem.ServiceProcess.ServiceBaseを継承したクラスを作り、OnShutdown()を継承してシャットダウンは検知できたが、処理がすぐに止まってしまう(2秒程度で強制終了しているように見える)

    3. シャットダウン時の猶予が欲しくてレジストリwaittokillservicetimeoutの値を伸ばしても結果は変わらず。

    4. ネット上ではシャットダウンジにOnShutdown()ではなくOnStop()が呼ばれるという情報があったのでCanStopをtrueにしてみたが呼ばれない(OnStop()ではRequestAddtionalTime()が使えるので、猶予時間が延ばせると思ったがダメだった)

    ■質問

    ・何か方法があると思うのですが手詰まり気味なので、何か情報があればよろしくお願いします。

    2014年9月28日 19:08

回答