我已经使用Cassandra CQL驱动程序来实现一些模块。我知道CQL驱动程序可以在端口9042上工作,我的模块在cassandra服务器的9042端口上可以正常工作(尝试本地和远程)。但是,由于数据中心的某些限制,Cassandra的9042端口未打开。我需要使我的应用程序在该数据中心上工作。

我们可以在端口9160上以某种方式使用相同的代码吗?我知道9160是节俭的端口,用于Cassandra的许多其他驱动程序。我只是想知道是否有可能使CQL驱动程序在9160上运行或尽可能少地修改代码以使其在9160上运行的任何破解方法。

当前,当我尝试对端口9160使用相同的代码时,出现以下错误

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s)  tried for query failed (tried: xx.yy.zz.aa        (com.datastax.driver.core.ConnectionException:  [xx.yy.zz.aa :9160] Unexpected   error during   transport initialization
(com.datastax.driver.core.ConnectionException:   [xx.yy.zz.aa :9160] Operation timed out)),         xx.yy.zz.aa :9160


当我尝试telnet 9160端口时

telnet xx.yy.zz.aa 9160
Trying xx.yy.zz.aa...
Connected to xx.yy.zz.aa.
Escape character is '^]'.
xyzaaaa
Connection closed by foreign host.


寻求帮助。

最佳答案

通过将cassandra服务器上cassandra.yaml中的native_transport_port从9042更改为9160,可以在端口9160上提供CQL接口。您还需要将rpc_port更改为9160以外的其他值。

在datastax Java驱动程序中,您可以使用withPort方法配置要在Cluster.Builder中使用的端口。

10-08 02:26