锁定不同Azure网络作业的C#代码



我有两个不同的网络作业(一个是计划的,一个是连续的)在Azure中运行。第一个web作业中的一段代码和第二个web作业的代码发生冲突(代码不完全相同),我想防止它们并行运行。

我正在考虑在这里使用blob租约。或者,正如我在这里读到的,Azure Webjobs SDK支持singleton属性。是否可以将此属性应用于不同Web作业中的方法,并具有公共作用域(或下面的公共锁)。

你能想出其他办法吗?

是否可以将此属性应用于不同Web作业中的方法,并具有公共作用域(或下面的公共锁)。

根据我的经验,使用blob租赁是个好主意。

Blob租约允许您申请Blob的所有权。一旦你有了租约,你就可以更新Blob或删除Blob,而不用担心下面的另一个进程会改变它。


你能想出其他办法吗?

ETag也用于乐观并发控制。我们可以参考更多细节。

stringETag(r/o)–这是资源特定版本的标识符。这用于web缓存验证,并允许客户端发出有条件的请求。ETag也用于乐观并发控制。例如,如果您正在读取一个blob并保存ETag,然后进行一些其他处理并返回上载该blob的新版本,则可以再次读取ETag并将其与以前的值进行检查。如果ETag值匹配,则文件没有更改,您可以上传新版本的文件。如果匹配失败,存储服务将返回412错误(前提条件失败)。

相关内容

  • 没有找到相关文章

最新更新