gpt4 book ai didi

java - 如何设置 Sesame 2.8.0 RepositoryConnection 超时

转载 作者:行者123 更新时间:2023-11-30 08:14:34 25 4
gpt4 key购买 nike

我正在尝试为我的 Sesame 连接到后端数据库实现类似断路器的功能。当数据库不存在时,我想在 2 秒后知道这一点,而不是依赖客户端的默认超时。我可以用我自己的 FutureTasks 来克服这个问题,我将在其中执行存储库初始化和连接获取。然而,在日志中我可以看到芝麻客户端使用 o.a.h.i.c.PoolingClientConnectionManager - 我打赌 ExecutorService 已经通过了它和一些默认超时。这将使我的 FutureTask 解决方案变得非常困惑。有没有更简单的方法来为芝麻客户端设置超时。

最佳答案

您可以设置查询和更新超时,特别是在查询/更新对象本身上:

 RepositoryConnection conn = ....;

...
TupleQuery query = conn.prepareTupleQuery(QueryLangage.SPARQL, "SELECT ...");
query.setMaxExecutionTime(2);

但是,如果您想为所有通过 HTTP 的 api 调用设置一般超时,目前唯一的方法是获取对 HttpClient 对象的引用,然后重新配置它:

  HTTPRepository repo = ....;
AbstractHttpClient httpClient = (AbstractHttpClient)((SesameClientImpl)repo.getSesameClient()).getHtttpClient();
HttpParams params = httpClient.getParams();
params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);
httpClient.setParams(params);

正如您所看到的,这相当脆弱(大量显式强制转换),并且使用了 Apache HttpClient 4.4 中已弃用的方法。因此,我并不完全推荐将此作为稳定的解决方案,但它应该在短期内提供一种解决方法。

从长远来看,Sesame 开发团队正在致力于更方便地访问 httpclient 的配置。

关于java - 如何设置 Sesame 2.8.0 RepositoryConnection 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com