Azure Cosmos Mongo API 3.6配置mongo端点连接失败咨询
连接失败核心原因
问题本质是客户端与接入端点的协议不匹配,两个端点的服务定位完全不同:
你当前使用的接入代码如下:
new CosmosClientBuilder().endpoint(ENDPOINT).key(KEY).buildAsyncClient();
这段代码初始化的是Cosmos DB Core(SQL) API专属的原生异步客户端,仅支持和Cosmos原生文档端点通信:
- 后缀为
documents.azure.com:443的documentEndpoint是Cosmos原生服务端点,走平台自定义的REST/RPC协议,可以正常识别Core SDK发出的所有请求,所以配置该地址时连接正常。 - 后缀为
mongo.cosmos.azure.com:443的mongoEndpoint是MongoDB兼容协议专属接入点,仅识别标准MongoDB Wire Protocol格式的请求,完全不识别Core SDK发出的原生Cosmos协议报文,握手阶段就会直接拒绝连接,和你传入的主密钥是否正确无关。
接入变更源的注意事项
- 你使用的账号主密钥对两个端点都有效,不需要排查密钥配置问题。
- 当前使用的Core SDK变更源接口仅支持Core(SQL) API账号,无法操作Mongo API下的业务数据。如果你要使用Mongo API 3.6版本的变更能力,需要更换为MongoDB官方Java驱动,连接
mongoEndpoint后通过MongoDB标准Change Stream接口实现需求,不能用当前的Cosmos Core SDK接入。 - 所有Cosmos DB兼容类API(Mongo、Cassandra、Gremlin、Table等)账号,都会默认提供
documents.azure.com后缀的原生Core端点,该端点是平台内置的管理端点,不代表可以用Core SDK直接操作兼容API下存储的业务数据。
内容的提问来源于stack exchange,提问作者1729i
相关产品推荐
相关产品推荐

