Azure的BLOB API有时看起来像是被外星人设计的。 就像专为当大多数简单的人需要通过箍跳一些很奇特的使用情况。 这里就是这样的。
我有两个辅助角色。 一个是创造斑点,另外一个是处理他们(移动到“已完成”时,处理完成文件夹)。 团块大小可以适度地大,像100 MB。 很显然,我不希望第二个角色开始读取斑点斑点具有所有数据之前。 好了,我们可以期望从租赁API的帮助:获得租约,复制BLOB,释放租约。 然后,读者也将尝试收购加工前的租约,因此将不得不等待。 但是,没有,租期不能上还不存在一个blob收购。 另外,我无法找到创建了“关于”租赁作为一个原子操作的BLOB的任何方法。
请让我知道,如果你知道的伎俩,使其工作。 您忠诚的。
很显然,我不希望第二个角色开始读取斑点斑点具有所有数据之前。
假设你正在创建一个BlockBlob
,到时候的斑被提交(或者换句话说,所有的数据被写入到BLOB)的BLOB将不存在,也不会拿出在团块上市结果所有意图和目的(除非你上市的时候斑点专门请教未提交的斑点)。 所以我觉得你没有做什么特别的存在。
好了,我们可以期望从租赁API的帮助:获得租约,复制BLOB,释放租约。 然后,读者也将尝试收购加工前的租约,因此将不得不等待。
这里有一个替代的解决方案这一点。 你可以做的是利用Azure Queues
。 当BLOB创工作者角色上传完毕的团块,它只是在这将由工作者角色处理BLOB轮询队列写入消息。 假设有的处理器辅助角色许多情况下,则每个实例可以GET
从这个队列,其将工作类似于消息blob lease
(消息仅适用于一个实例),然后开始处理斑点。
文章来源: Preventing azure blob from being accessed by other service while it's being created