我有以下代码,我在其中批量插入了很多项
var batchSize = 200;
for (int i = 0; i < items.Count() / batchSize + 1; i++)
{
var insertOperations = new List<Task<ItemResponse<MyType>>>();
var batchItems = items.Skip(i * batchSize).Take(batchSize);
if (batchItems.Count() == 0)
break;
foreach (var batchItem in batchItems)
{
insertOperations.Add(container.CreateItemAsync(batchItem));
}
await Task.WhenAll(insertOperations);
}我的CosmosClient是
CosmosClientOptions options = new CosmosClientOptions
{
ConnectionMode = ConnectionMode.Direct,
AllowBulkExecution = true,
MaxRetryAttemptsOnRateLimitedRequests = 30,
MaxRetryWaitTimeOnRateLimitedRequests = TimeSpan.FromSeconds(180)
};根据Azure门户中的度量标准,在插入大量项目时,我似乎被限制住了。因为我允许很长的等待时间和大量的重试,所以代码会花费更长的时间,但它最终会完成工作。我对记录所需的重试次数很感兴趣,因为这将帮助我了解哪些操作导致了最大的节流。
有没有可能知道cosmos客户端需要重试多少次才能执行操作?
发布于 2020-06-30 06:26:46
您可以在作为操作响应的一部分显示的诊断中看到它们。每个container.CreateItemAsync(batchItem)返回一个ItemResponse<T>。
ItemResponse.Diagnostics.ToString()包含该特定操作的信息,包括它可能经历的任何重试。
https://stackoverflow.com/questions/62637000
复制相似问题