Document DB Triggers是否并行执行?

时间:2017-11-06 19:01:49

标签: azure-cosmosdb

我们正在尝试使用文档数据库触发器来生成自动编号。为此,我们在集合中有一个特殊文档来存储自动编号,然后通过调用此触发器创建集合中的每个其他文档。触发器的行为方式如下 -

1)从自动编号文档中读取最后使用的编号。 2)将数字增加1,然后将增加的值保存回自动编号文档 3)创建一个新文档,其中autoId字段设置为递增值,新文档的其余字段将传递到正文

await documentClient.CreateDocumentAsync("collectionURI", newDocument, new RequestOptions() { PreTriggerInclude = new List<string> {"autoNumbersTrigger"} });

我们在我们的机器上本地运行文档数据库客户端时测试了这一点,即使使用100K并行插入,我们的触发器也不会遇到并发问题。因此,问题是这种行为有保证吗?是否安全地说所描述的触发行为永远不会遇到并发问题?

1 个答案:

答案 0 :(得分:1)

您应该捕获(int)DocumentClientException.StatusCode == 449(重试),这可以在对同一文档的并发更新期间返回。正如您所注意到的,即使在高写入率下也是如此。