azure 如果在使用ConnectionMode.Direct时没有设置ConnectionPolicy.ConnectionProtocol,会发生什么情况?

fquxozlt  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(118)

我正在阅读这篇关于Azure CosmosDB连接策略的文章。
它说如果你使用ConnectionMode = ConnectionMode.Direct,那么你还需要设置ConnectionProtocol
这篇文章说ConnectionMode.Direct使用TCP,所以我假设应该将ConnectionProtocol设置为Protocol.Tcp
由于Protocol枚举的默认值是Https,如果不设置它会发生什么,它会默认为Https吗?
如果默认为Https,是否会导致任何问题?
下面是我的代码:

var connectionPolicy = new ConnectionPolicy
{
    //ConnectionProtocol = Protocol.Tcp, // This is not set!
    ConnectionMode = ConnectionMode.Direct,
    RequestTimeout = TimeSpan.FromSeconds(10),
    UserAgentSuffix = "ING",
    RetryOptions = new RetryOptions
    {
        MaxRetryAttemptsOnThrottledRequests = 5,
        MaxRetryWaitTimeInSeconds = 2
    }
};

var client = new DocumentClient(new Uri(endpoint), authKey, connectionPolicy, ConsistencyLevel.Session);

以下是Protocol枚举以供参考:

public enum Protocol
{           
    Https,            
    Tcp
}

我们已经开始得到ServiceUnavailableException和SNAT端口耗尽错误,所以我想知道这是否与它有关。

a1o7rhls

a1o7rhls1#

对于V2 SDK,默认值为Https。您将以Direct/HTTPS模式结束,而不是Direct/TCPGateway
Direct/HTTPS虽然有效,但不再是文档(https://docs.microsoft.com/azure/cosmos-db/sql/sql-sdk-connection-modes)上任何建议的一部分。如果需要使用HTTP,请使用Gateway,如果要使用Direct,请使用Direct/TCP
V3 SDK删除了选择Direct/HTTPS的可能性,它只是Direct(TCP)或Gateway(HTTP)。
关于SNAT,请遵循https://docs.microsoft.com/azure/cosmos-db/sql/troubleshoot-service-unavailable
直接模式将通过设计使用更多数量的连接,确保机器可以支持这一点,并确保您遵循Singleton模式以避免创建更多连接而不是重用它们。

相关问题