Couchbase java.util.concurrent.TimeoutException 同时获取多个文档
Couchbase java.util.concurrent.TimeoutException while getting multiple documents
我正在尝试使用以下代码从 Couchbase 获取文档:
public synchronized void initialize() {
CouchbaseEnvironment env =
DefaultCouchbaseEnvironment
.builder()
.connectTimeout(10000)
.build();
setBucket(proper
.getCluster()
.openBucket(proper.getBucket(),proper.getBucketPassword())
}
public JsonDocument findByDocumentId(String id) {
try {
return getBucket.get(id);
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
我能够成功检索 3 或 4 个文档,但随后收到 TimeoutException:
java.lang.RuntimeException: java.util.concurrent.TimeoutException
at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:93)
at com.couchbase.client.java.CouchbaseBucket.get(CouchbaseBucket.java:100)
at com.couchbase.client.java.CouchbaseBucket.get(CouchbaseBucket.java:95)
为什么我会超时?我该如何避免?
Thread.sleep 将有助于避免此问题。
我们必须实现下一次文档读取的等待时间。这不是解决方案,而是解决方法。
您可以在配置环境时使用 kvTimeout(long)
参数增加键/值操作超时。
EG
CouchbaseEnvironment env =
DefaultCouchbaseEnvironment
.builder()
.kvTimeout(5000) //in ms
.build();
但是如果您需要增加它并且您没有给您的系统带来压力,我会担心。这可能指向某处配置不当的设置。
有关可配置选项的列表,请参阅 http://developer.couchbase.com/documentation/server/4.0/sdks/java-2.2/env-config.html
我正在尝试使用以下代码从 Couchbase 获取文档:
public synchronized void initialize() {
CouchbaseEnvironment env =
DefaultCouchbaseEnvironment
.builder()
.connectTimeout(10000)
.build();
setBucket(proper
.getCluster()
.openBucket(proper.getBucket(),proper.getBucketPassword())
}
public JsonDocument findByDocumentId(String id) {
try {
return getBucket.get(id);
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
我能够成功检索 3 或 4 个文档,但随后收到 TimeoutException:
java.lang.RuntimeException: java.util.concurrent.TimeoutException
at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:93)
at com.couchbase.client.java.CouchbaseBucket.get(CouchbaseBucket.java:100)
at com.couchbase.client.java.CouchbaseBucket.get(CouchbaseBucket.java:95)
为什么我会超时?我该如何避免?
Thread.sleep 将有助于避免此问题。 我们必须实现下一次文档读取的等待时间。这不是解决方案,而是解决方法。
您可以在配置环境时使用 kvTimeout(long)
参数增加键/值操作超时。
EG
CouchbaseEnvironment env =
DefaultCouchbaseEnvironment
.builder()
.kvTimeout(5000) //in ms
.build();
但是如果您需要增加它并且您没有给您的系统带来压力,我会担心。这可能指向某处配置不当的设置。
有关可配置选项的列表,请参阅 http://developer.couchbase.com/documentation/server/4.0/sdks/java-2.2/env-config.html