我正在阅读这篇关于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端口耗尽错误,所以我想知道这是否与它有关。
1条答案
按热度按时间a1o7rhls1#
对于V2 SDK,默认值为
Https
。您将以Direct/HTTPS
模式结束,而不是Direct/TCP
或Gateway
。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模式以避免创建更多连接而不是重用它们。