取自
http://outworkers.com/blog/post/a-series-on-phantom-part-1-getting-started-with-phantom
我尝试连接到具有多个节点的Cassandra集群,如下所示:
object Defaults {
val hosts = Seq("Cassnode1.company.com", "Cassnode2.company.com", "Cassnode3.company.com")
val Connector = ContactPoints(hosts).keySpace("whatever")
}
如果由于某种原因,其中一个节点不存在,我得到:
Caused by: java.lang.IllegalArgumentException: Cassnode3.company.com: unknown error
如果我从主机Seq中删除此节点,一切正常。
我正在使用幻影dsl版本" 1.28.12"我想知道这是否是预期的行为,因为我认为只要其中一个列出的主机不存在/不可用,应用程序就会使用其余的主机。
在将列表传递给ContactPoints之前,有没有办法测试与节点的连接?
谢谢!
答案 0 :(得分:1)
没有,ContactPoints
只是利用基础ClusterBuilder
的重点是为你处理“那种事情”。您还可以传递错误处理函数来处理一些问题,这样可以使事情变得更容易。
根据直觉,其余的节点在/etc/hosts
中都有某种IP映射,但是你错过了Cassnode3.company.com
的那个。请记住,他们都需要解析为IP地址,否则他们对ClusterBuilder
无效。
我强烈建议升级到2.1.3
版本的幻像,但在这种特殊情况下,罪魁祸首几乎完全是您的本地开发设置,只需要为第三个URL进行IP映射。