我已经使用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中使用的端口。