启动时重试与 Cassandra 节点的连接
我想使用 Docker 来启动我的应用程序和 Cassandra 数据库,我想使用 Docker Compose 来实现这一点。不幸的是,Cassandra的启动速度比我的应用程序慢得多,并且由于我的应用程序急切地初始化了对象,因此我得到了以下异常:Cluster
com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: cassandra/172.18.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [cassandra/172.18.0.2:9042] Cannot connect))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:233)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:79)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1454)
at com.datastax.driver.core.Cluster.init(Cluster.java:163)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:334)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:309)
at com.datastax.driver.core.Cluster.connect(Cluster.java:251)
根据stacktrace和一些调试,似乎Cassandra Java驱动程序不会将重试策略应用于初始启动。这对我来说似乎有点奇怪。有没有办法配置驱动程序,以便它将继续尝试连接到服务器,直到成功为止?