【发布时间】:2020-02-05 08:08:12
【问题描述】:
我没有使用 Elasticssearch。我正在尝试使用 CQL 在 cassandra 中执行一些数据库操作。我正在使用线程。在运行代码时,我总是在一段时间后在线程中遇到异常:com.datastax.oss.driver.api.core.NoNodeAvailableException:没有节点可用于执行查询。
我什至用一个线程进行了测试。错误仍然存在。这是我的代码:
InetAddress addrOne = InetAddress.getByName("52.15.195.41");
InetSocketAddress addrSocOne = new InetSocketAddress(addrOne,9042);
CqlSession sessionOne = CqlSession.builder().addContactPoint(addrSocOne).withLocalDatacenter("us-east-2").withKeyspace("test").build();
while(counter <= 100)
{
String query = "select max(id) FROM samplequeue";
ResultSet rs = session.execute(query);
for (Row row : rs)
{
int exS = row.getInt("system.max(id)");
}
counter++;
Thread.sleep(50);
}
这是一个非常简单的修改示例,只是为了演示问题。我无法解决它。所有线程都退出并给出相同的异常。我在 AWS 上运行 cassandra 3.11.4。我的所有节点都已启动并运行,我可以在后端很好地执行操作。
【问题讨论】:
-
你是如何初始化会话对象的?
-
@CarlosMonroyNieblas 我现在已经在我的问题的代码部分添加了它。
-
威廉在下面提出了一个很好的观点。当您运行
nodetool status时,您的数据中心的名称是什么?
标签: java multithreading cassandra datastax