首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将CosmosClient.CreateAndInitializeAsync()与CosmosClientBuilder.Build()一起使用

如何将CosmosClient.CreateAndInitializeAsync()与CosmosClientBuilder.Build()一起使用
EN

Stack Overflow用户
提问于 2022-11-17 10:46:07
回答 2查看 40关注 0票数 0

这个YouTube 视频 @27:20讨论了如何在缓存中填充路由信息,以避免冷启动期间的延迟。您可以尝试获取您知道不存在的文档,也可以使用CosmosClient.CreateAndInitializeAsync()

我已经设置了这个代码:

代码语言:javascript
复制
private async Task<Container> CreateContainerAsync(string endpoint, string authKey)
{
    var cosmosClientBuilder = new CosmosClientBuilder(
            accountEndpoint: endpoint,
            authKeyOrResourceToken: authKey)
        .WithConnectionModeDirect(portReuseMode: PortReuseMode.PrivatePortPool, idleTcpConnectionTimeout: TimeSpan.FromHours(1))
        .WithApplicationName(UserAgentSuffix)
        .WithConsistencyLevel(ConsistencyLevel.Session)
        .WithApplicationRegion(Regions.AustraliaEast)
        .WithRequestTimeout(TimeSpan.FromSeconds(DatabaseRequestTimeoutInSeconds))
        .WithThrottlingRetryOptions(TimeSpan.FromSeconds(DatabaseMaxRetryWaitTimeInSeconds), DatabaseMaxRetryAttemptsOnThrottledRequests);

    var client = cosmosClientBuilder.Build();
    
    var databaseResponse = await CreateDatabaseIfNotExistsAsync(client).ConfigureAwait(false);
    
    var containerResponse = await CreateContainerIfNotExistsAsync(databaseResponse.Database).ConfigureAwait(false);

    return containerResponse;
}

是否有任何方法将CosmosClient.CreateAndInitializeAsync()与其结合,以填充缓存?

如果没有,是否可以这样做来填充缓存?

代码语言:javascript
复制
public class CosmosClientWrapper
{   
    public CosmosClientWrapper(IKeyVaultFacade keyVaultFacade)
    {           
        var container = CreateContainerAsync(endpoint, authenticationKey).GetAwaiter().GetResult();

        // Get a document that doesn't exist to populate the routing info:
        container.ReadItemAsync<object>(Guid.NewGuid().ToString(), PartitionKey.None).GetAwaiter().GetResult();     
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-17 15:46:18

CreateAndInitialize或BuildAndInitialize的目的是预先建立对所需容器执行数据平面操作所需的连接(参考https://learn.microsoft.com/azure/cosmos-db/nosql/sdk-connection-modes#routing)。

如果容器不存在,那么使用CreateAndInitialize或BuildAndInitialize是没有意义的,因为没有可以预先建立/预热的连接,因为没有要连接的目标后端端点。这就是为什么需要容器/数据库信息的原因,因为唯一的好处是将连接到支持该/那些容器/s的后端机器上。

票数 1
EN

Stack Overflow用户

发布于 2022-11-17 10:56:57

请参阅CosmosClientBuilder.BuildAndInitializeAsync,它创建了cosmos客户端并初始化了所提供的容器。我相信这就是你要找的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74474090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档