azure - CqlSession 无法连接到 Azure Cosmos DB Cassandra
问题描述
我有这个代码
@Bean
public CqlSession getCqlSession() {
return CqlSession.builder()
.addContactPoint(new InetSocketAddress(cassandraHost, cassandraPort))
.withAuthCredentials(cassandraUsername, cassandraPassword)
.build();
}
连接失败,出现以下异常:
Failed to instantiate [com.datastax.oss.driver.api.core.CqlSession]: Factory method 'getCqlSession' threw
exception; nested exception is com.datastax.oss.driver.api.core.AllNodesFailedException: Could not reach
any contact point, make sure you've provided valid addresses (showing first 1 nodes, use getAllErrors()
for more): Node(endPoint=tinyurl-cassandra.cassandra.cosmos.azure.com/52.230.23.170:10350, hostId=null,
hashCode=237f706): [com.datastax.oss.driver.api.core.DriverTimeoutException: [s0|control|id: 0xb89dacff,
L:/192.168.0.101:59158 - R:tinyurl-cassandra.cassandra.cosmos.azure.com/52.230.23.170:10350] Protocol
initialization request, step 1 (OPTIONS): timed out after 5000 ms]
我是 Cassandra 的新手,并尝试了以下方法:
- 验证凭据没问题。
- 尝试使用
csqlsh
- 也无法连接。 - 检查我的机器中没有防火墙设置。可以远程登录到主机和端口。
- 可以从 Azure 数据资源管理器打开 Cassandra Shell。
我错过了什么?我是新来的。任何帮助将不胜感激。
解决方案
看起来您正在使用 v.4x 版本的 Java 驱动程序。此驱动程序中的默认负载平衡要求您提供本地数据中心,例如:
CqlSession.builder().withSslContext(sc)
.addContactPoint(new InetSocketAddress(cassandraHost, cassandraPort)).**withLocalDatacenter("UK South")**
.withAuthCredentials(cassandraUsername, cassandraPassword).build();
您可以查看此入门示例以供进一步参考:https ://github.com/Azure-Samples/azure-cosmos-db-cassandra-java-getting-started-v4
推荐阅读
- r - 使用包“fruclimadapt”的 mutate() 输入出现错误问题
- gps - gpsd 用什么格式喂食?
- amazon-web-services - 我可以将一个 AWS 账户用于需要 SES 的多个网站吗?
- sql - 存储过程:从表“A”中选择数据并在表“B”中插入数据
- javascript - 为什么我的环境变量在反应中未定义?
- android - 如何在 adnroid 中更新 Room 版本?
- python - 为什么我得到不同的 roc_auc_scores?
- javascript - AG Grid 在初始化时展开行
- excel - @ 运算符在不需要时出现
- jsf-2.2 - Mojarra 2.2 中与 Flash 相关的 cookie 问题