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部分中提及,并相应地更新常见问题解答。