Search code examples
javaspringamazon-ec2cassandracassandra-cli

Cassandra + Java Spring connection trouble


I tried to install and run Apache Cassandra on the amazon instance. On the instance all work fine. Also i can to connect from remote machine via cassandra-cli --host PUBLIC_IP --port 9160.

But when i try to connect via spring-data-cassandra (1.2.0.Build snapshot) cassandra throw error:

All host(s) tried for query failed (tried: /PUBLIC_IP:9160  (com.datastax.driver.core.ConnectionException: [/PUBLIC_IP:9160] Unexpected error during transport initialization (com.datastax.driver.core.TransportException: [/PUBLIC_IP:9160] Channel has been closed)))

My cassandra.yuml:

listen_address: localhost
start_native_transport: true
native_transport_port: 9042
start_rpc: true
rpc_address: 0.0.0.0
rpc_port: 9160
broadcast_rpc_address: PRIVATE_AWS_INSTANCE_IP

cassandra-cli --host PUBLIC_IP --port 9160 work fine.

Cluster bean:

@Bean
public CassandraClusterFactoryBean cluster() throws Exception {

    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
    cluster.setContactPoints(env.getProperty("cassandra.contactpoints"));
    cluster.setPort(Integer.parseInt(env.getProperty("cassandra.port")));  
    return cluster;
}

props:

cassandra.contactpoints=PUBLIC_IP
cassandra.port=9160
cassandra.keyspace=mykeyspace

Dependencies:

<properties>
    <spring.version>4.1.0.RELEASE</spring.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-cql</artifactId>
        <version>1.1.0.RELEASE</version>
    </dependency>


    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

 <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-cassandra</artifactId>
        <version>1.2.0.BUILD-SNAPSHOT</version>
    </dependency>

UPD

Problem was resolved by changing port to 9042 (native)


Solution

  • You're using the native driver but connecting on the Thrift port. Try 9042.