使用gocql库创建了一个cassandra集群。
func CreateCassandraCluster(host string) (*gocql.Session, error) {
cluster := gocql.NewCluster(host)
cluster.ConnectTimeout = time.Second * 10
cluster.DisableInitialHostLookup = true
session, err := cluster.CreateSession()
if err != nil {
return session, err
}
return session, nil
}
我的目标是用gocql做一个函数。会话作为一个参数,将在传递任何cassandra集群的会话时检查它是否已连接?对于redis,我们有PING查询来确定redis是否已连接,对于使用gocql的cassandra,我们有类似的东西吗?
2条答案
按热度按时间6tdlim6h1#
这看起来和你昨天问的问题一样,虽然我现在似乎找不到,所以我想知道你是否删除了它。
我不清楚你想实现什么。对于Cassandra,检查会话是否已连接没有帮助。
当驱动程序第一次建立到集群的连接时,它使用您传入
NewCluster()
的主机进行初始连接,以发现其余节点和集群拓扑(机架配置、数据中心),然后建立到节点的连接。如果连接失败,驱动程序中的默认策略足够聪明,可以自动重新连接,因此复制此功能是毫无意义的。
正如我在您的另一个问题中所指出的,如果您的最终目标是监视Cassandra集群的健康状况,那么最好使用免费开源工具,如Metric Collector for Apache Cassandra (MCAC)。干杯
bqf10yzr2#
尝试了这种方法,我们只需检查会话的打开或关闭
不确定这是不是正确的方法