查询文档数据库收到"A task was canceled"错误



当我查询 DocumentDB 时,有时会收到"任务已取消"异常。用于查询 DocumentDB 的代码如下

    public IOrderedQueryable<T> QueryToDb(string DatabaseId, string CollectionId)
    {
        DocumentClient dcClient = new DocumentClient(new Uri(ConfigurationManager.AppSettings["documentURI"]), ConfigurationManager.AppSettings["documentKEY"]);
        Uri CollectionLink = UriFactory.CreateDocumentCollectionUri(ConfigurationManager.AppSettings[DatabaseId], ConfigurationManager.AppSettings[CollectionId]);
        return dcClient.CreateDocumentQuery<T>(CollectionLink, feedOptions);
    }

此错误是否与 DocumentDB 限制有某种联系?在引发的异常中,没有任何对 HTTP 429 状态代码的引用,而只有"任务已取消"。

"

任务已取消"异常通常是由于与并发性相关的问题。

在上面的示例中,我注意到每当调用 Azure DocumentDB 客户端时QueryToDb都会构造它。

请务必注意,DocumentDB 客户端相当重,但也是线程安全的。

如果您有多个线程调用QueryToDb - 您的应用程序可能花费太多时间来构造和初始化数据库客户端,从而导致异步查询任务被取消。

多线程应用程序最好将 DocumentDB 客户端创建为跨线程共享的单例。

有时可以

向上/向外扩展消费者服务。

相关内容

最新更新