2017-11-19 6 views
1

Azureで実行中の2つの異なるWebジョブ(予定されたものと1つのもの)があります。最初のwebjobのコードは2番目のwebjobのコードと衝突します(コードはまったく同じではありません)。私はそれらを並行して実行しないようにしたいと思います。異なるAzure webjobs用のC#コードをロック

ここでは、BLOBリースを使用することを考えています。また、hereを読むと、Azure Webjobs SDKはシングルトン属性をサポートしています。異なるwebjobのメソッドにこの属性を適用することは可能であり、共通のスコープ(またはその下に共通のロック)があります。

他の方法が考えられますか?

答えて

1

この属性は、さまざまなWebジョブのメソッドに適用でき、共通のスコープ(またはその下に共通のロック)がありますか?

私の経験に基づいて、blob leaseを使用することをお勧めします。

ブロブリースでは、Blobに所有権を主張できます。リースを取得したら、Blobを更新したり、Blobを削除したりすることができます。


あなたは、任意の別の方法を考えることができますか?

ETagsは、楽観的並行制御のためにも使用される。詳細はthisを参照してください。

ストリングのETag(R/O) - これは、リソースの特定のバージョンの識別子です。これは、Webキャッシュの検証に使用され、クライアントが条件付き要求を行うことを許可します。 ETagsは楽観的同時制御にも使用されます。例えば、を読んでいて、ETagを保存してから別の処理を行い、そのBLOBの新しいバージョンをアップロードすると、ETagをもう一度読んで、以前の値と照合することができます。 ETag値が一致する場合、ファイルは変更されておらず、新しいバージョンをアップロードすることができます。一致が失敗すると、ストレージサービスは412エラーを返します(前提条件は失敗しました)。

関連する問題