2013-10-16 35 views
3

我想知道如果com.datastax.cassandra:cassandra-driver-core:2.0.0-beta2可以与org.apache一起使用。卡桑德拉:卡桑德拉全:1.2.1。我使用卡桑德拉 - Maven的插件:1.2.1-1(使用org.apache.cassandra:卡桑德拉全:1.2.1),加入DataStax与Cassandra 1.2.1的Java驱动程序2.0.0-beta2:不支持的协议版本

start_native_transport: true 
native_transport_port: ${cassandra.nativePort} 

yaml插件属性。我可以成功地telnet到端口。

然而,当我试图通过下面的代码进行连接,

// Ports.NATIVE has the same value as "${cassandra.nativePort}" above 
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1") 
    .withPort(Ports.NATIVE).build(); 
Session session = cluster.connect(); 

我得到以下异常:

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1 (com.datastax.driver.core.ConnectionException: [/127.0.0.1] Unexpected error during transport initialization (com.datastax.driver.core.TransportException: [/127.0.0.1] Unexpected exception triggered (com.datastax.driver.core.exceptions.DriverInternalError: Server response from unsupported protocol version: 1)))) 
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:179) 
    at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:77) 
    at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:868) 
    at com.datastax.driver.core.Cluster$Manager.newSession(Cluster.java:888) 
    at com.datastax.driver.core.Cluster$Manager.access$200(Cluster.java:792) 
    at com.datastax.driver.core.Cluster.connect(Cluster.java:155) 

我认为问题的症结所在是Server response from unsupported protocol version: 1

这是否意味着2.0.0-beta2驱动程序不能与Cassandra 1.2.1一起使用?驱动程序/服务器兼容性矩阵在哪里?

我已经烧了差不多一天了。

感谢, 马修

回答

12

是的,这是不兼容的。 From the java-driver 2.0 requirements

该驱动程序使用Casandra的本地协议,并且此2.0版使用该协议的第二个版本。因此,此版本的驱动程序需要Cassandra版本大于或等于2.0(对于Cassandra 1.2,请使用版本1.0的驱动程序)。

尝试降级到1.0,最新版本是1.0.4:

<dependency> 
    <groupId>com.datastax.cassandra</groupId> 
    <artifactId>cassandra-driver-parent</artifactId> 
    <version>1.0.4</version> 
</dependency> 
+0

啊,没有看到,因为它在驱动程序核心文件夹下。如果它突出显示在根的自述文件中,它会很好。谢谢! –

-1

的默认协议水平驱动程序版本2.0或更高是2.与旧版本卡桑德拉工作(例如1.2)的协议级需要被设置为1。

协议版本可使用Cluster.withProtocolVersion方法等

群集簇= Cluster.builder()。addContactPoint(“127更新的驱动程序设置。 0.0.1“)。withProtocolVersion(1) .withPort(Ports.NATIVE).build();

相关问题