Cosmos Db库Microsoft.Azure.DocumentDB.Core(2.1.0)-实际的REST调用

时间:2018-09-26 12:53:18

标签: .net-core azure-cosmosdb

我们正在尝试Wiremock(https://github.com/WireMock-Net/WireMock.Net)CosmosDb调用-因此我们可以在.net core 2.1微服务中构建集成测试。

通过查看WireMock实例的“请求/响应”条目,我们可以观察到以下内容: 1)前往“ /”

我们模拟了数据库的返回元数据

没关系

2)获取集合(在我们的示例中为“ / dbs / Chunker / colls / RHTMLChunks”)

返回有关集合的元数据

没关系

3)发布查询,导致一个文档返回集合中的文档端点(在我们的示例中为“ / dbs / Chunker / colls / RHTMLChunks / docs”)

我试图模拟当我们对邮递员中的CosmosDb实例执行完全相同的查询时得到的结果,包括标题和响应。

但是我发现lib一次又一次地查询。 (我可以通过在Visual Studio中暂停查看此内容,然后在WireMock中查看RequestLog)

有人知道应该返回什么。我已经设置WireMock返回以下json负载:

{
"_rid": "q0dcAOelSAI=",
"Documents": [
    {
        "id": "gL20020621z2D34-1",
        "ChunkSize": 658212,
        "TotalChunks": 2,
        "Metadata": {
            "Active": true,
            "PublishedDate": "",
        },
        "ChunkId": 1,
        "Markup": "<h1>hello</h1>",
        "MainDestination": "gL20020621z2D34",
        "_rid": "q0dcAOelSAIHAAAAAAAAAA==",
        "_self": "dbs/q0dcAA==/colls/q0dcAOelSAI=/docs/q0dcAOelSAIHAAAAAAAAAA==/",
        "_etag": "\"0100e92a-0000-0000-0000-5ba96cf70000\"",
        "_attachments": "attachments/",
        "_ts": 1537830135
    }
],
"_count": 0

}

问题: 1)找不到属于Microsoft.Azure.DocumentDB.Core v2.1.0的.pdb 2)应该返回什么有效载荷/标题,以便库不会崩溃,并在我们调用时重试:

var response = await documentQuery.ExecuteNextAsync<DocumentDto>(); // this hangs forever

请帮助:)

1 个答案:

答案 0 :(得分:2)

我们正在努力开源C#代码库以及其他一些有趣的改进,以简化此过程。同时,我主张使用仿真器进行本地测试等,尽管我知道模拟仍然好很多,但速度会更快-会很困难:)

我最好的指针实际上是我们的Node.js代码库,因为它已经公开。查询代码相对难以遵循,但是基本上,您创建了一个查询,我们查找了需要与之交谈的所有分区,然后我们为每个分区发送一个请求并继续查询,直到我们没有取回连续令牌为止再来一次(或者maxBufferedItem Count / etc。超出了限制,我们暂停直到返回,等等)

有效地,我们为每个分区发出N个请求,其中N是结果的页面数,并且可以随每个分区和查询而变化。您可能可以模拟单个分区,单个页面响应相对容易,但是完整的分区响应将变得很有趣。

正如我在开始时提到的,我们希望在今年年底之前推出一些很酷的东西,这将使离线模拟变得更加容易,并最终将其开源。在那之前,使用仿真器可能会更好。