获取多个文档时,Couchbase java.util.concurrent.TimeoutException

时间:2016-05-03 21:10:19

标签: java couchbase

我正在尝试使用以下代码从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)

为什么我会超时,我该如何避免?

2 个答案:

答案 0 :(得分:1)

配置环境时,可以使用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

答案 1 :(得分:-1)

Thread.sleep有助于避免此问题。 我们必须实现下一个文档读取的等待时间。这不是解决方案,而是解决方法。