2012-01-17 9 views
5

Azureブロブストレージ内のコンテナ/フォルダを監視して変更を行う最良の方法を探しています。これまでは、これを行う方法のひとつしか見つけられませんでした。これは、コンテナの内容を定期的にpingして変更を探すワーカープロセスをどこかで実行することです。変更をAzure blobストレージ内のコンテナを監視する最良の方法は何ですか?

良い方法がありますか?

+0

あなたが、トリガーをしたい場合、あなたが持っているように思えますSQL Azureを使用するここでちょっといいの比較です:http://brian.chipsofttech.com/blogs/brian/post/Azure-Data-Storage.aspx –

+0

SQL Azureのトリガーは、ブロブストレージコンテナには適用されません、またSQL Azureでは、質量を提供しませんブロブおよびコンテナの保管能力。 –

答えて

9

ストレージSDKはこれを提供していませんが、それは新しいWebJobs SDKの主な特徴です。リスニングするコンテナを指定できる[BlobInput]属性があり、新しいBLOBが検出されたときにメソッドにディスパッチする効率的なBLOBリスナが含まれています。ここで

http://blogs.msdn.com/b/jmstall/archive/2014/02/18/azure-storage-bindings-part-1-blobs.aspxは使用例です:そこブロブの例をいくつかで聞いている

public static void CopyWithStream(
     [BlobInput("container/in/{name}")] Stream input, 
     [BlobOutput("container/out1/{name}")] Stream output 
     ) 
    { 
     Debug.Assert(input.CanRead && !input.CanWrite); 
     Debug.Assert(!output.CanRead && output.CanWrite); 

     input.CopyTo(output); 
    } 

およびBLOBリスナーはここの下にある:

 JobHost host = new JobHost(acs); // From nuget: Microsoft.WindowsAzure.Jobs.Host 
     host.RunAndBlock(); 
+0

コンテナが10分ごとにスキャンされていることに言及することは重要です(!)。したがって、Webジョブはすぐには起動されません。 – johni

1

もっと良い方法はありません、IMHO。ごめんなさい。 HTH

0

イゴールの権利は、その中であなたは、コンテナをポーリングする必要があります。私は何かを明確にしたかった。あなたが言った場合:

は、ワーカープロセスは、WebロールやWorkerロール内のスレッドかもしれ変更

を探すために、定期的にコンテナの中身にpingを実行しているどこかのワーカープロセスを実行しますRun()ループなど。別の役割は必要ありません。ポーリングコードが複数のロールインスタンスで機能していることを確認してください(例:1つのインスタンスからのポーリングを確実にするために、いくつかのタイプのページBLOBリースをミューテックスとして行うことができます)。キューメッセージはメッセージ作成時に不可視タイムアウトをサポートするため、Azureキューを使用してこれを行うこともできます。他の人のよう

4

は、アプリケーションのための合理的な間隔でポーリングがOKである、と述べました。しかし、コンテンツ自体を確認する必要はありません。 ETag(プレーンHTTPを使用している場合)をチェックするか、APIを使用している場合はBlobProperties.LastModifiedUtcをチェックすることができます。

+0

これは私が思ったことです。これにプッシュ通知タイプのものがあったらそれはいいとは思いませんか? –

+0

@BillForneyおそらくはい、しかし、おそらく無制限のサイズのコンテナとその全体的な分散の性質を考慮すると、それを行い、規模を拡大し、インフラストラクチャを殺すことは自明ではありません。 –

+0

コンテナのBlobProperties.LastModifiedUtcフィールドのみをチェックする場合、変更を失うことはありません。 Blobに巨大なコンテナを格納するために複数のマシンが使用されている場合には問題はありません。過去に「変更がある」ときにイベントが発生しませんか? – hpityu

0

Azureストレージ分析が必要な情報を保持していますか?ポーリングを行うには何かが必要です。

1

あなたは更新が/ブロブを変更するコードを管理していると仮定すると、あなたはブロブ変更は、これにより繰り返しポーリングの必要性を回避するたびにプッシュ通知を生成するSignalRを使用することができます。

関連する問題