从com.example.cassandra使用Java Cassandra 1.0的Java驱动程序连接到Cassandra时出错

Sau*_*nde 26 cassandra datastax-java-driver

在使用DataStax的Cannsandra的Java驱动程序连接到Cassandra客户端时,它会抛出以下错误.

线程"main"中的异常com.datastax.driver.core.exceptions.NoHostAvailableException:尝试查询的所有主机都失败(尝试:[/ 127.0.0.1])

请建议......

谢谢!

我的java代码是这样的:

package com.example.cassandra;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.Metadata;

public class SimpleClient {

private Cluster cluster;

public void connect(String node){

    cluster = Cluster.builder().addContactPoint(node).build();
    Metadata metadata = cluster.getMetadata();
    System.out.println(metadata.getClusterName());
}   


public void close()
{
cluster.shutdown();
}

public static void main(String args[]) {

SimpleClient client = new SimpleClient();
client.connect("127.0.0.1");
client.close();
}
Run Code Online (Sandbox Code Playgroud)

Bha*_*waj 13

在我的情况下,我遇到了这个问题,因为我在连接期间使用了默认的RPC端口9160.可以在cassandra.yaml中找到CQL的不同端口 -

start_native_transport: true
# port for the CQL native transport to listen for clients on
native_transport_port: 9042
Run Code Online (Sandbox Code Playgroud)

一旦我将代码更改为使用端口9042,连接尝试成功 -

public BinaryDriverTest(String cassandraHost, int cassandraPort, String keyspaceName) {
    m_cassandraHost = cassandraHost;
    m_cassandraPort = cassandraPort;
    m_keyspaceName = keyspaceName;

    LOG.info("Connecting to {}:{}...", cassandraHost, cassandraPort);
    cluster = Cluster.builder().withPort(m_cassandraPort).addContactPoint(cassandraHost).build();
    session = cluster.connect(m_keyspaceName);
    LOG.info("Connected.");
}

public static void main(String[] args) {
    BinaryDriverTest bdt = new BinaryDriverTest("127.0.0.1", 9042, "Tutorial");
}
Run Code Online (Sandbox Code Playgroud)


Ane*_*ran 5

我有这个问题,它是通过在SocketOptions中设置ReadTimeout来排序的:

Cluster cluster = Cluster.builder().addContactPoint("localhost").build();
cluster.getConfiguration().getSocketOptions().setReadTimeoutMillis(HIGHER_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)


Orb*_*ita 4

转到您的 Apache Cassandra conf 目录并启用二进制协议

Cassandra 二进制协议 Java 驱动程序使用 Cassandra 1.2 中引入的二进制协议。它仅适用于大于或等于 1.2 的 Cassandra 版本。此外,二进制协议服务器不是使用 Cassandr a 1.2 中的默认配置文件启动的。您必须编辑每个节点的 cassandra.yaml 文件:

start_native_transport: true
Run Code Online (Sandbox Code Playgroud)

然后重新启动节点。