我正在尝试从我的 java 应用程序中使用 Riak,如果集群中的一台机器出现故障,它将开始使用其他机器。我设法在 C# 中使用 Corrugated Iron 驱动程序做到了这一点,但似乎无法使其在 java 中工作。
我确保我在 PBClusterConfig 中指定了不止一台 Riak 机器,即客户端“了解”集群中的所有机器。
我这样设置PBClusterConfig
:
BClusterConfig config = new PBClusterConfig(maxConnections);
for(RiakServerConfig server : servers) {
PBClientConfig.Builder builder = new PBClientConfig.Builder();
PBClientConfig serverConfig = builder
.withHost(server.getHostname())
.withPort(server.getPort())
.build();
config.addClient(serverConfig);
}
然后我的实际操作(仅读取和写入)如下所示:
client
.createBucket(bucket)
.withRetrier(DefaultRetrier.attempts(3))
.execute()
.store(key, value)
.withRetrier(DefaultRetrier.attempts(3))
.execute();
当 riak 集群正常时,此代码可以工作,但是当其中一台机器出现故障时,几秒钟后我收到以下错误com.basho.riak.client.RiakRetryFailedException: com.basho.riak.pbc.AcquireConnectionTimeoutException: timeout acquiring connection permit from pool
:
关于如何使这项工作的任何想法?