【问题标题】:DocumentDB TransientFaultHandling for CoreDocumentDB TransientFaultHandling for Core
【发布时间】:2017-04-06 16:44:48
【问题描述】:

我正在尝试将我的代码迁移到 Core。

我使用的是 DocumentDB TransientFaultHandling 包,但我似乎无法为核心库找到它。

使用它仍然是最佳做法,还是有其他选择可以达到相同的结果?

TIA

【问题讨论】:

    标签: asp.net-core azure-cosmosdb


    【解决方案1】:

    当前的 SDK(包括核心和完整框架)已经包含作为 TransientFaultHandling 包一部分的故障处理,由于您无法定义指数逻辑,因此并不完全相同,但它适用于最常见的场景。

    ConnectionPolicy 设置中:

    var _dbClient = new DocumentClient("Db_uri", "Db_key", new ConnectionPolicy()
    {
        MaxConnectionLimit=100,
        ConnectionMode = ConnectionMode.Direct,
        ConnectionProtocol = Protocol.Tcp,
        RetryOptions = new RetryOptions() { MaxRetryAttemptsOnThrottledRequests=3, MaxRetryWaitTimeInSeconds=60 }
    }); 
    

    【讨论】:

    • 嗯...我有点想要指数逻辑...:|
    • API 已经返回一个标头,说明您应该等待多少毫秒,SDK 会读取并使用它。当您已经定义了所需的等待时间时,指数回退有哪些好处?
    • 根据文档和公开的属性,这似乎只处理限制错误,而不是瞬态故障。我没有看到任何地方表明 SDK 处理了瞬态故障。
    • 暂时性故障(例如,由于收集重新创建而导致的 404)也由 SDK 处理。如果需要,您始终可以在 SDK 之上使用自己的重试库,例如 Polly。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2018-04-21
    • 2017-07-15
    相关资源
    最近更新 更多