0
私はAzure関数:blob-triggerを持っています。 指定したフォルダ内のblobを追加または変更すると、このblobが変更されます。サイクルアズール関数(Blob-trigger)
しかし、1つの問題があります。関数によってブロブを変更した後は、すでに変更されたブロブを処理するために再び起動します。また。したがって、関数は繰り返されます。
私の機能はサイクリングを防ぐために何ができますか?
私はAzure関数:blob-triggerを持っています。 指定したフォルダ内のblobを追加または変更すると、このblobが変更されます。サイクルアズール関数(Blob-trigger)
しかし、1つの問題があります。関数によってブロブを変更した後は、すでに変更されたブロブを処理するために再び起動します。また。したがって、関数は繰り返されます。
私の機能はサイクリングを防ぐために何ができますか?
私の機能はサイクリングを防ぐために何ができますか?
修正されたblobのETagを格納し、blobを変更する前にETagを比較する方法の1つです。 ETagが既に存在する場合は、BLOBが変更されたばかりであることを意味します。私たちはこのブロブで何もする必要はありません。下記のコードは参照用です。
public static void ProcessBlob([BlobTrigger("mycontainer/{name}")] CloudBlockBlob blob, string name)
{
Console.WriteLine("before check:" + blob.Properties.ETag);
if (CheckETagExists(blob.Properties.ETag))
{
//Do nothing
}
else
{
//Modify this blob
//...
//After modified this blob, save the ETag of this blob to a place.
blob.UploadText("abcdefg");
SaveETag(blob.Properties.ETag);
Console.WriteLine("Save:" + blob.Properties.ETag);
}
}
public static bool CheckETagExists(string etag)
{
return ModifiedBlobETags.Contains(etag);
}
public static void SaveETag(string etag)
{
ModifiedBlobETags.Add(etag);
}
public static List<string> ModifiedBlobETags = new List<string>();
サンプルはテスト目的のためにメモリに保存してETagを、私はあなたがあなたの関数のためにファイルやAzureテーブルサービスを永続化するためてETagを保存示唆しています。
大声で考えてみると、変更されたBLOBを別のコンテナに書き込むことができます。 –