CreateDocumentCollectionIfNotExistsAsync并不总是有效

如果它不存在,我正在尝试创建一个集合。

首先,我通过以下方式创建DocumentClient:

public DocumentClient CreateClient(ConnectionPolicy connectionPolicy = null) { return new DocumentClient(new Uri(this.AccountEndpoint), this.AccountKey, connectionPolicy); } 

现在我有了我的文档客户端(让我们称之为documentDbClient ),我尝试使用CreateDocumentCollectionIfNotExistsAsync

 var documentDbClient = dbConnection.CreateClient(); await documentDbClient.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("mydatabase"), new DocumentCollection { Id = "testcollection" }); 

现在,我希望这会在名为mydatabase数据库下创建一个名为testcollection的集合。 然而,没有任何反应。 没有创建集合,也没有抛出exception。

我想也许它只是很慢,所以我等了30分钟然后回到门户网站,看看我的collections是否已经制作完……

它没有。

怎么了?

UPDATE

好的,所以我发现如果我改变我试图创建的集合的名称,它就可以了。 我之前已经多次创建和删除了该集合,现在看来Azure无法在90%的时间内创建它。

因此,在重复创建和销毁集合时,您可能会遇到限制情况。 以下是FAQ的Table API部分的摘录(同样适用于文档集合):

检测并限制表的快速创建速率。 我们建议您查看表的创建速率,并将其降低到每分钟不到5个。

当前的节流速率为5创建/分钟。 因此,对于unit testing场景,您需要解决此问题(例如,保留集合,但在每次测试运行后只清空其内容)。

注意:我已通知产品团队,油门提及仅在表API部分中提及,并相应地更新常见问题解答。