如何设置Sesame 2.8.0 RepositoryConnection超时

问题描述 投票:1回答:1

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

java sesame owlim graphdb
1个回答
1
投票
您可以设置查询和更新超时,特别是在查询/更新对象本身上:

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的配置。

© www.soinside.com 2019 - 2024. All rights reserved.