【问题标题】:RU Charge for Queries in DocumentDBDocumentDB 查询的 RU 费用
【发布时间】:2017-09-26 20:01:32
【问题描述】:

使用 .NET 库,我如何确定查询的 RU 费用。它返回 IQueryable,我不知道如何记录它。如何记录所有请求的 RU 的奖励积分。

简单代码但不返回 RU:

 var docs = DocumentDBRepository<CampaignMessage>.client.
         CreateDocumentQuery<CampaignMessage>(UriFactoryExtensions.CreateCollectionUri(), new FeedOptions() { MaxItemCount = -1, MaxDegreeOfParallelism = 5 }).Where(x => x.BlastKey == "abc-796").

【问题讨论】:

标签: azure-cosmosdb


【解决方案1】:

使用 .NET 库,我如何确定查询的 RU 费用。它返回 IQueryable,我不确定如何记录。

由于 Mikhail 提供的链接,您需要调用 docs.AsDocumentQuery().ExecuteNextAsync 从 DocumentDB 服务检索结果,您可以从 FeedResponse&lt;T&gt;.RequestCharge 获取查询的 RU 费用。

对于记录所有请求的 RU,我在使用 .NET 客户端 SDK 记录操作日志时检查了客户端日志,但只有错误操作有响应标头的日志。我假设你需要编写代码来记录每个请求的 RU 费用,这里是代码 sn-p,你可以参考它:

public static class DocumentDBExtension
{
    public static async Task<IEnumerable<TSource>> QueryWithRuLog<TSource>(this IQueryable<TSource> source)
    {
        List<TSource> items = new List<TSource>();
        double totalRuCost = 0;
        var query = source.AsDocumentQuery();
        while (query.HasMoreResults)
        {
            var result =await query.ExecuteNextAsync<TSource>();
            items.AddRange(result);
            //log RU
            totalRuCost += result.RequestCharge;
        }
        //log totalRuCost
        Console.WriteLine($"RUs cost:{totalRuCost}");
        return items;
    }
}

//Usage
var result=docs.QueryWithRuLog<CampaignMessage>();

【讨论】:

  • 很好,那个小小的 while 循环让我迷惑了 ;)
猜你喜欢
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多