我有一个包含“产品”集合的 Cosmos 资源。该集合中有许多文档。足以让我在繁忙时期经常看到大量 429,尽管配置了相当多的吞吐量。
迭代每个产品的最便宜的方法(对于 R/U)是什么?
假设:
使用 Change Feed 应该是最便宜的。您可以使用多种选项(Spark Connector、Azure Functions 等)来实现此目的,但如果您已经在使用 .NET,最直接的方法是使用 Change Feed Pull 模型
FeedIterator<YourType> iteratorForTheEntireContainer = container.GetChangeFeedIterator<YourType>(ChangeFeedStartFrom.Beginning(), ChangeFeedMode.LatestVersion);
while (iteratorForTheEntireContainer.HasMoreResults)
{
FeedResponse<YourType> response = await iteratorForTheEntireContainer.ReadNextAsync();
if (response.StatusCode == HttpStatusCode.NotModified)
{
Console.WriteLine($"Completed full read of entire container");
break;
}
else
{
foreach (YourType item in response)
{
// process item
}
}
}